0 0

java.sql.Connection类中有个方法 10

java.sql.Connection类中有个方法

PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException

这个方法中参数的第二个作用是什么,代表什么意思?

下面是org.springframework.jdbc.core.PreparedStatementCreatorFactory中的一段代码
[code=java]

public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
        PreparedStatement ps = null;
        if (generatedKeysColumnNames != null || returnGeneratedKeys) {
                try {
                        if (generatedKeysColumnNames != null) {
                                ps = con.prepareStatement(this.actualSql, generatedKeysColumnNames);   // TODO
                        }else {
                                ps = con.prepareStatement(this.actualSql, PreparedStatement.RETURN_GENERATED_KEYS);
                        }
                }catch (AbstractMethodError ex) {
                        throw new InvalidDataAccessResourceUsageException(
                                        "The JDBC driver is not compliant to JDBC 3.0 and thus " +
                                        "does not support retrieval of auto-generated keys", ex);
            }
        }
        else if (resultSetType == ResultSet.TYPE_FORWARD_ONLY && !updatableResults) {
                ps = con.prepareStatement(this.actualSql);
        }
        else {
                ps = con.prepareStatement(this.actualSql, resultSetType,
                                updatableResults ? ResultSet.CONCUR_UPDATABLE : ResultSet.CONCUR_READ_ONLY);
        }
        setValues(ps);
        return ps;
}



呵呵,这个问题困惑我许久了!
问题补充
kimmking 写道
finallygo 写道
ms在联合主键的时候用

jdbc规范里,insert时,获取自动添加的keys用的。
但是翻了下mysql 5.1.13 驱动的实现
第二个参数传 什么都可以,只要length > 0就可以。

/**
* @see Connection#prepareStatement(String, String[])
*/
public java.sql.PreparedStatement prepareStatement(String sql,
String[] autoGenKeyColNames) throws SQLException {
java.sql.PreparedStatement pStmt = prepareStatement(sql);

((com.mysql.jdbc.PreparedStatement) pStmt)
.setRetrieveGeneratedKeys((autoGenKeyColNames != null)
&& (autoGenKeyColNames.length > 0));

return pStmt;
}

我说为啥,传什么都可以运行的通,呵呵,API说的不是很明白!
2011年3月30日 18:25

3个答案 按时间排序 按投票排序

0 0

采纳的答案

finallygo 写道
ms在联合主键的时候用

jdbc规范里,insert时,获取自动添加的keys用的。
但是翻了下mysql 5.1.13 驱动的实现
第二个参数传 什么都可以,只要length > 0就可以。

/**
* @see Connection#prepareStatement(String, String[])
*/
public java.sql.PreparedStatement prepareStatement(String sql,
String[] autoGenKeyColNames) throws SQLException {
java.sql.PreparedStatement pStmt = prepareStatement(sql);

((com.mysql.jdbc.PreparedStatement) pStmt)
.setRetrieveGeneratedKeys((autoGenKeyColNames != null)
&& (autoGenKeyColNames.length > 0));

return pStmt;
}

2011年3月30日 18:25
0 0

ms在联合主键的时候用

2011年3月30日 18:25
0 0

/**
     * Creates a default <code>PreparedStatement</code> object capable
     * of returning the auto-generated keys designated by the given array.
     * This array contains the names of the columns in the target
     * table that contain the auto-generated keys that should be returned.
     * This array is ignored if the SQL
     * statement is not an <code>INSERT</code> statement.
     * <P>
     * An SQL statement with or without IN parameters can be
     * pre-compiled and stored in a <code>PreparedStatement</code> object. This
     * object can then be used to efficiently execute this statement
     * multiple times.
     * <P>
     * <B>Note:</B> This method is optimized for handling
     * parametric SQL statements that benefit from precompilation. If
     * the driver supports precompilation,
     * the method <code>prepareStatement</code> will send
     * the statement to the database for precompilation. Some drivers
     * may not support precompilation. In this case, the statement may
     * not be sent to the database until the <code>PreparedStatement</code>
     * object is executed.  This has no direct effect on users; however, it does
     * affect which methods throw certain SQLExceptions.
     * <P>
     * Result sets created using the returned <code>PreparedStatement</code>
     * object will by default be type <code>TYPE_FORWARD_ONLY</code>
     * and have a concurrency level of <code>CONCUR_READ_ONLY</code>.
     *
     * @param sql an SQL statement that may contain one or more '?' IN
     *        parameter placeholders
     * @param columnNames an array of column names indicating the columns
     *        that should be returned from the inserted row or rows
     * @return a new <code>PreparedStatement</code> object, containing the
     *         pre-compiled statement, that is capable of returning the
     *         auto-generated keys designated by the given array of column
     *         names
     * @exception SQLException if a database access error occurs
     *
     * @since 1.4
     */
    PreparedStatement prepareStatement(String sql, String columnNames[])
throws SQLException;

2011年3月30日 18:25

相关推荐

    java连接sql

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.sql.ResultSet; /** * @author Administrator * */ public class sqlServer {...

    java.net.SocketException Connection reset 解决方法

    在 Java 中,Socket 是一个类,它提供了创建连接、发送和接收数据的方法。 * SocketException:SocketException 是一种 Java 异常,它发生在 Socket 编程中,包括连接断开、数据发送失败等情况。 * Connection reset...

    com.microsoft.sqlserver.jdbc.SQLServerDriver

    当Java应用程序想要连接到SQL Server时,它会实例化这个类,并调用其`registerDriver()`方法,将驱动注册到JDBC驱动管理器中。之后,就可以使用`DriverManager.getConnection()`方法建立到数据库的连接。 描述中...

    java+sql.rar_SQL java_java s_java sql_java sql 简单_java.sql.

    在Java中,JDBC是Java API的一个部分,它提供了一组接口和类,使得Java程序可以连接到各种类型的数据库,如MySQL、Oracle、SQL Server等。JDBC的核心概念包括: 1. **Driver Manager**:它是Java应用程序与数据库...

    Cannot load JDBC driver class 'com.microsoft.sqlserver.jdbc.SQLServerDriver'

    这些通常在`java.sql.DriverManager.getConnection()`方法中提供,如: ```java Connection conn = DriverManager.getConnection( "jdbc:sqlserver://localhost:1433;databaseName=myDatabase", "username", ...

    java驱动SQLDriver

    要在Java程序中使用SQL Server Driver,你需要先将其添加到项目的类路径中。通常,这可以通过在Maven或Gradle的依赖管理中添加对应的驱动依赖来实现。对于Microsoft SQL Server,常用的驱动是`...

    java连接sql数据库jar包

    在Java开发中,连接SQL Server数据库通常涉及到JDBC(Java Database Connectivity)技术,这是一个Java API,允许Java应用程序与各种数据库进行交互。为了实现这一功能,我们需要特定的驱动程序,也就是jar包,它...

    java 连接sqlserver使用的java-sqlserver-connect.jar包

    - 加入依赖:将"java-sqlserver-connect.jar"添加到项目的类路径(classpath)中,这可以是在IDE如Eclipse或IntelliJ IDEA中配置,也可以在构建工具如Maven或Gradle的配置文件中声明。 - 创建连接:使用`...

    java连接SQLServer2008代码和jar包

    在上述代码中,我们首先导入了`java.sql.Connection`、`java.sql.DriverManager`和`java.sql.SQLException`等必要的类。然后,通过`Class.forName()`方法加载JDBC驱动。`DriverManager.getConnection()`方法用于创建...

    java_sql数据库驱动

    2. **建立连接**: 使用`java.sql.DriverManager`类的`getConnection()`方法来创建数据库连接。这个方法需要提供数据库URL、用户名和密码。对于SQL Server,URL格式通常是`jdbc:sqlserver://&lt;服务器地址&gt;:&lt;端口号&gt;;...

    JAVASQL.rar

    总的来说,"JAVASQL.rar"压缩包可能包含了连接SQL Server数据库所需的JTDS驱动,这对于Java开发者来说是一个宝贵的资源,可以帮助他们快速地在Java项目中集成SQL Server数据库支持,进行数据的存取和管理。...

    JAVA 连接sqlserver类 已封装好 & sqljdbc.jar

    在这个场景中,标题提到的"JAVA 连接sqlserver类 已封装好",指的是已经有一个预先编写好的Java类,它封装了与SQL Server数据库交互的基本操作,使得开发者可以更方便地进行数据库操作。 `sqljdbc.jar`是一个驱动包...

    sql.rar_MySQLConnection_sqljdbc4-3.0.jar

    标题中的"sql.rar_MySQLConnection_sqljdbc4-3.0.jar"暗示了这是一个与SQL数据库连接相关的资源包,特别是涉及到MySQL和SQL Server的连接。其中,“MySQLConnection”指的是Java程序连接MySQL数据库的方式,而“sql...

    java 连接sqlserver数据库查询,并分页显示

    在Java编程中,连接SQL Server数据库并执行查询是常见的任务,尤其当涉及到大量数据时,分页显示就显得尤为重要。本篇文章将详细讲解如何使用Java连接SQL Server数据库,执行查询语句以及实现分页显示。 首先,我们...

    项目源码-java企业QQ项目

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util....

    java 连接 SQL Server2008 jar包

    在Java编程环境中,连接SQL Server 2008数据库通常需要使用特定的驱动程序,这就是所谓的JDBC驱动。Microsoft提供了一个名为"SQL Server JDBC Driver"的库,它允许Java应用程序与SQL Server数据库进行通信。在你提供...

    My sql 驱动程序

    1. **添加驱动到项目**:首先,你需要将mysql-connector-java.jar文件添加到你的项目类路径中。这可以通过将JAR文件放入项目的lib目录,或者在IDE(如Eclipse、IntelliJ IDEA)中配置构建路径来完成。 2. **导入...

    java 和 sqlserver连接

    将这个驱动添加到你的Java项目的类路径中,这样Java程序才能找到并使用它。 下面是一步步的详细步骤: 1. **导入JDBC驱动**: 在Java源代码中,你需要导入必要的JDBC类。这通常包括`java.sql.Connection`、`java....

    JAVA与SQLserver2005数据库连接例子

    2. **导入所需库**: 在Java源代码中,需要导入JDBC相关的类,如`java.sql.Connection`, `java.sql.DriverManager`, `java.sql.Statement`, `java.sql.ResultSet`等。 ```java import java.sql.Connection; import ...

Global site tag (gtag.js) - Google Analytics