Statement和preparedstatement类的区别

Statement、PreparedStatement、PreparedStatement + 批处理 的区别
Statement、PreparedStatement、PreparedStatement + 批处理 的区别
2.预编译PreparedStatement
3.使用PreparedStatement + 批处理
为了区分出这三者之间的效率,下面的事例执行过程都是在数据库表t1中插入1万条记录,并记录出所需的时间(此时间与电脑硬件有关)
1.使用Statement对象
使用范围:当执行相似SQL(结构相同,具体值不同)语句的次数比较少
优点:语法简单
缺点:采用硬编码效率低,安全性较差。
原理:硬编码,每次执行时相似SQL都会进行编译&&&
事例执行过程:
&&&public void exec(Connection conn){
&&&&&&&&&try {
&&&&&&&&&&&&&&&&&&&&&Long beginTime = System.currentTimeMillis();
&&&&&&&&&&&&&&&&&&&&&&&&&&&conn.setAutoCommit(false);//设置手动提交
&&&&&&&&&&&&&&&&&&&&Statement st = conn.createStatement();
&&&&&&&&&&&&&&&&&&&&&&&&&&&&for(int i=0;i&10000;i++){
&&&&&&&&&&&&&&&&&&&&&&&String sql="insert into t1(id) values ("+i+")";
&&&&&&&&&&&&&&&&&&&&&&&st.executeUpdate(sql);
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&&&&&&Long endTime = System.currentTimeMillis();
&&&&&&&&&&&&&&&&&&&System.out.println("Statement用时:"+(endTime-beginTime)/1000+"秒");//计算时间
&&&&&&&&&&&&&&&&&&&st.close();
&&&&&&&&&&&&&&&&&&conn.close();
&&&&&&&&&&&&&&&&} catch (SQLException e) {&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&}
执行时间:Statement用时:31秒
2.预编译PreparedStatement
使用范围:当执行相似sql语句的次数比较多(例如用户登陆,对表频繁操作..)语句一样,只是具体的值不一样,被称为动态SQL
优点:语句只编译一次,减少编译次数。提高了安全性(阻止了SQL注入)
缺点:&执行非相似SQL语句时,速度较慢。
原理:相似SQL只编译一次,减少编译次数
名词解释:
SQL注入:select * from user where username="张三" and&password="123" or 1=1;
前面这条语句红色部分就是利用sql注入,使得这条词句使终都会返回一条记录,从而降低了安全性。
事例执行过程:
&&&&&&public void exec2(Connection conn){
&&&&&&&&&try {
&&&&&&&&&&&&&&&&&&&Long beginTime = System.currentTimeMillis();
&&&&&&&&&&&&&&&&&&&conn.setAutoCommit(false);//手动提交
&&&&&&&&&&&&&&&&&&&PreparedStatement pst = conn.prepareStatement("insert into t1(id) values (?)");
&&&&&&&&&&&&&&&&&&&for(int i=0;i&10000;i++){
&&&&&&&&&&&&&&&&&&&&&&&pst.setInt(1, i);
&&&&&&&&&&&&&&&&&&&&&&&pst.execute();&&&
&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&</mit();
&&&&&&&&&&&&&&&&&&&&&&Long endTime = System.currentTimeMillis();
&&&&&&&&&&&&&&&&&&&&&&System.out.println("Pst用时:"+(endTime-beginTime)+"秒");//计算时间
&&&&&&&&&&&&&&&&&&&&&&pst.close();
&&&&&&&&&&&&&&&&&&&&&&conn.close();
&&&&&&&&&} catch (SQLException e) {&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&}
执行时间:Pst用时:14秒
3.使用PreparedStatement +&批处理
使用范围:一次需要更新数据库表多条记录
优点:减少和SQL引擎交互的次数,再次提高效率,相似语句只编译一次,减少编译次数。提高了安全性(阻止了SQL注入)
批处理: 减少和SQL引擎交互的次数,一次传递给SQL引擎多条SQL。
名词解释:
PL/SQL引擎:在oracle中执行pl/sql代码的引擎,在执行中发现标准的sql会交给sql引擎进行处理。
SQL引擎:执行标准sql的引擎。
事例执行过程:
public void exec3(Connection conn){
&&&&&&&&&&&&&&&&&&&try {
&&&&&&&&&&&&&&&&&&&&&&conn.setAutoCommit(false);
&&&&&&&&&&&&&&&&&&&&&&Long beginTime = System.currentTimeMillis();
&&&&&&&&&&&&&&&&&&&PreparedStatement pst = conn.prepareStatement("insert into t1(id) values (?)");
&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&for(int i=1;i&=10000;i++){&&&
&&&&&&&&&&&&&&&&&&&&&&&pst.setInt(1, i);
&&&&&&&&&&&&&&&&&&&&&&pst.addBatch();//加入批处理,进行打包
&&&&&&&&&&&&&&&&&&&&&&&if(i%1000==0){//可以设置不同的大小;如50,100,500,1000等等
&&&&&&&&&&&&&&&&&&&&&&&&pst.executeBatch();
&&&&&&&&&&&&&&&&&&&&&&&&</mit();
&&&&&&&&&&&&&&&&&&&&&&&pst.clearBatch();
&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&& pst.executeBatch();
&&&&&&&&&&&&&&&&&&&&&&Long endTime = System.currentTimeMillis();
&&&&&&&&&&&&&&&&&&&&&&System.out.println("pst+batch用时:"+(endTime-beginTime)+"毫秒");
&&&&&&&&&&&&&&&&&&&&&&pst.close();
&&&&&&&&&&&&&&&&&&&&&&conn.close();
&&&&&&&&&&&&&&&&&&&} catch (SQLException e) {
&&&&&&&&&&&&&&&&&&&&&&// TODO Auto-generated catch block
&&&&&&&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&&&&&&&&&&}
执行时间:pst+batch用时:485毫秒
摘自:/topic/368990
发表评论:
TA的最新馆藏[转]&[转]&[转]&[转]&PreparedStatement (Java Platform SE 6)
JavaTM&PlatformStandard&Ed. 6
接口 PreparedStatement
所有超级接口:
所有已知子接口:
public interface PreparedStatement
表示预编译的 SQL 语句的对象。
SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。
注:用于设置 IN 参数值的设置方法(setShort、setString 等等)必须指定与输入参数的已定义 SQL 类型兼容的类型。例如,如果 IN 参数具有 SQL 类型 INTEGER,那么应该使用 setInt 方法。
如果需要任意参数类型转换,使用 setObject 方法时应该将目标 SQL 类型作为其参数。
在以下设置参数的示例中,con 表示一个活动连接:
PreparedStatement pstmt = con.prepareStatement(&UPDATE EMPLOYEES
SET SALARY = ? WHERE ID = ?&);
pstmt.setBigDecimal(1, )
pstmt.setInt(2, 110592)
另请参见:
, , , , , ,
&&&&&&&&&&将一组参数添加到此 PreparedStatement 对象的批处理命令中。
&&&&&&&&&&立即清除当前参数值。
&&&&&&&&&&在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。
&&&&&&&&&&在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
&&&&&&&&&&在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。
&&&&&&&&&&获取包含有关 ResultSet 对象列信息的 ResultSetMetaData 对象,ResultSet 对象将在执行此 PreparedStatement 对象时返回。
&&&&&&&&&&获取此 PreparedStatement 对象的参数的编号、类型和属性。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 java.sql.Array 对象。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定输入流。
(int&parameterIndex, &x, int&length)
&&&&&&&&&&将指定参数设置为给定输入流,该输入流将具有给定字节数。
(int&parameterIndex, &x, long&length)
&&&&&&&&&&将指定参数设置为给定输入流,该输入流将具有指定字节数。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 java.math.BigDecimal 值。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定输入流。
(int&parameterIndex, &x, int&length)
&&&&&&&&&&将指定参数设置为给定输入流,该输入流将具有给定字节数。
(int&parameterIndex, &x, long&length)
&&&&&&&&&&将指定参数设置为给定输入流,该输入流将具有指定字节数。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 java.sql.Blob 对象。
(int&parameterIndex, &inputStream)
&&&&&&&&&&将指定参数设置为 InputStream 对象。
(int&parameterIndex, &inputStream, long&length)
&&&&&&&&&&将指定参数设置为 InputStream 对象。
(int&parameterIndex, boolean&x)
&&&&&&&&&&将指定参数设置为给定 Java boolean 值。
(int&parameterIndex, byte&x)
&&&&&&&&&&将指定参数设置为给定 Java byte 值。
(int&parameterIndex, byte[]&x)
&&&&&&&&&&将指定参数设置为给定 Java byte 数组。
(int&parameterIndex, &reader)
&&&&&&&&&&将指定参数设置为给定 Reader 对象。
(int&parameterIndex, &reader, int&length)
&&&&&&&&&&将给定参数设置为给定 Reader 对象,该对象具有给定字符数长度。
(int&parameterIndex, &reader, long&length)
&&&&&&&&&&将指定参数设置为给定 Reader 对象,该对象具有给定字符数长度。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 java.sql.Clob 对象。
(int&parameterIndex, &reader)
&&&&&&&&&&将指定参数设置为 Reader 对象。
(int&parameterIndex, &reader, long&length)
&&&&&&&&&&将指定参数设置为 Reader 对象。
(int&parameterIndex, &x)
&&&&&&&&&&使用运行应用程序的虚拟机的默认时区将指定参数设置为给定 java.sql.Date 值。
(int&parameterIndex, &x, &cal)
&&&&&&&&&&使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Date 值。
(int&parameterIndex, double&x)
&&&&&&&&&&将指定参数设置为给定 Java double 值。
(int&parameterIndex, float&x)
&&&&&&&&&&将指定参数设置为给定 Java REAL 值。
(int&parameterIndex, int&x)
&&&&&&&&&&将指定参数设置为给定 Java int 值。
(int&parameterIndex, long&x)
&&&&&&&&&&将指定参数设置为给定 Java long 值。
(int&parameterIndex, &value)
&&&&&&&&&&将指定参数设置为 Reader 对象。
(int&parameterIndex, &value, long&length)
&&&&&&&&&&将指定参数设置为 Reader 对象。
(int&parameterIndex, &value)
&&&&&&&&&&将指定参数设置为 java.sql.NClob 对象。
(int&parameterIndex, &reader)
&&&&&&&&&&将指定参数设置为 Reader 对象。
(int&parameterIndex, &reader, long&length)
&&&&&&&&&&将指定参数设置为 Reader 对象。
(int&parameterIndex, &value)
&&&&&&&&&&将指定参数设置为给定 String 对象。
(int&parameterIndex, int&sqlType)
&&&&&&&&&&将指定参数设置为 SQL NULL。
(int&parameterIndex, int&sqlType, &typeName)
&&&&&&&&&&将指定参数设置为 SQL NULL。
(int&parameterIndex, &x)
&&&&&&&&&&使用给定对象设置指定参数的值。
(int&parameterIndex, &x, int&targetSqlType)
&&&&&&&&&&使用给定对象设置指定参数的值。
(int&parameterIndex, &x, int&targetSqlType, int&scaleOrLength)
&&&&&&&&&&使用给定对象设置指定参数的值。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 REF(&structured-type&) 值。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 java.sql.RowId 对象。
(int&parameterIndex, short&x)
&&&&&&&&&&将指定参数设置为给定 Java short 值。
(int&parameterIndex, &xmlObject)
&&&&&&&&&&将指定参数设置为给定 java.sql.SQLXML 对象。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 Java String 值。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 java.sql.Time 值。
(int&parameterIndex, &x, &cal)
&&&&&&&&&&使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Time 值。
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 java.sql.Timestamp 值。
(int&parameterIndex, &x, &cal)
&&&&&&&&&&使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Timestamp 值。
(int&parameterIndex, &x, int&length)
&&&&&&&&&&已过时。&&
(int&parameterIndex, &x)
&&&&&&&&&&将指定参数设置为给定 java.net.URL 值。
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
executeQuery
executeQuery()
PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的
ResultSet 对象。
包含该查询生成的数据的
ResultSet 对象;不会返回
- 如果发生数据库访问错误,在关闭的
PreparedStatement 上调用此方法,或者 SQL 语句没有返回
ResultSet 对象
executeUpdate
int executeUpdate()
PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如
DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。
(1) SQL 数据操作语言 (DML) 语句的行数 (2) 对于无返回内容的 SQL 语句,返回 0
- 如果发生数据库访问错误,在关闭的
PreparedStatement 上调用此方法,或者 SQL 语句返回一个
ResultSet 对象
void setNull(int&parameterIndex,
int&sqlType)
将指定参数设置为 SQL
注:必须指定参数的 SQL 类型。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
java.sql.Types 中定义的 SQL 类型代码
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
sqlType 是
DATALINK、
JAVA_OBJECT、
NVARCHAR、
LONGNVARCHAR、
STRUCT 数据类型之一并且 JDBC 驱动程序不支持此数据类型
setBoolean
void setBoolean(int&parameterIndex,
boolean&x)
将指定参数设置为给定 Java
boolean 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
BOOLEAN 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setByte(int&parameterIndex,
将指定参数设置为给定 Java
byte 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
TINYINT 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setShort(int&parameterIndex,
将指定参数设置为给定 Java
short 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
SMALLINT 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setInt(int&parameterIndex,
将指定参数设置为给定 Java
int 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
INTEGER 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setLong(int&parameterIndex,
将指定参数设置为给定 Java
long 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
BIGINT 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setFloat(int&parameterIndex,
将指定参数设置为给定 Java
REAL 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
FLOAT 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setDouble(int&parameterIndex,
将指定参数设置为给定 Java
double 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
DOUBLE 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
setBigDecimal
void setBigDecimal(int&parameterIndex,
将指定参数设置为给定
java.math.BigDecimal 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
NUMERIC 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setString(int&parameterIndex,
将指定参数设置为给定 Java
String 值。在将此值发送给数据库时,驱动程序将它转换成一个 SQL
VARCHAR 或
LONGVARCHAR 值(取决于该参数相对于驱动程序在
VARCHAR 值上的限制的大小)。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setBytes(int&parameterIndex,
将指定参数设置为给定 Java byte 数组。在将此值发送给数据库时,驱动程序将它转换成一个 SQL
VARBINARY 或
LONGVARBINARY 值(取决于该参数相对于驱动程序在
VARBINARY 值上的限制的大小)。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setDate(int&parameterIndex,
使用运行应用程序的虚拟机的默认时区将指定参数设置为给定
java.sql.Date 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setTime(int&parameterIndex,
将指定参数设置为给定
java.sql.Time 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
setTimestamp
void setTimestamp(int&parameterIndex,
将指定参数设置为给定
java.sql.Timestamp 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
TIMESTAMP 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
setAsciiStream
void setAsciiStream(int&parameterIndex,
int&length)
将指定参数设置为给定输入流,该输入流将具有给定字节数。在将一个非常大的 ASCII 值输入到
LONGVARCHAR 参数时,通过
java.io.InputStream 发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 ASCII 到数据库 char 格式的任何必要转换。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含 ASCII 参数值的 Java 输入流
length - 流中的字节数
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
setUnicodeStream
void setUnicodeStream(int&parameterIndex,
int&length)
将指定参数设置为给定输入流,该输入流将具有给定字节数。在将一个非常大的 Unicode 值输入到
LONGVARCHAR 参数时,通过
java.io.InputStream 对象发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 Unicode 到数据库 char 格式的任何必要转换。根据 Java 虚拟机规范中的定义,Unicode 流的字节格式必须是 Java UTF-8。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含 Unicode 参数值的
java.io.InputStream 对象
length - 流中的字节数
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
setBinaryStream
void setBinaryStream(int&parameterIndex,
int&length)
将指定参数设置为给定输入流,该输入流将具有给定字节数。在将一个非常大的二进制值输入到
LONGVARBINARY 参数时,通过
java.io.InputStream 对象发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含二进制参数值的 Java 输入流
length - 流中的字节数
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
clearParameters
void clearParameters()
立即清除当前参数值。
通常参数值对语句的重复使用仍然有效。设置一个参数值会自动清除其以前的值。不过,在某些情况下,直接释放当前参数值使用的资源也是很有用的;这可以通过调用 clearParameters 方法实现。
- 如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
void setObject(int&parameterIndex,
int&targetSqlType)
使用给定对象设置指定参数的值。除了假定 scale 为 0,此方法类似于上面的
setObject 方法。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含输入参数值的对象
targetSqlType - 将发送给数据库的 SQL 类型(定义于 java.sql.Types 中)
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
targetSqlType 是
DATALINK、
JAVA_OBJECT、
NVARCHAR、
LONGNVARCHAR、
STRUCT 数据类型之一并且 JDBC 驱动程序不支持此数据类型
另请参见:
void setObject(int&parameterIndex,
使用给定对象设置指定参数的值。第二个参数必须是 Object 类型;所以,应该对内置类型使用 java.lang 的等效对象。
JDBC 规范指定了一个从 Java Object 类型到 SQL 类型的标准映射关系。在发送到数据库之前,给定参数将被转换为相应 SQL 类型。
注意,通过使用特定于驱动程序的 Java 类型,此方法可用于传递特定于数据库的抽象数据类型。如果对象是实现 SQLData 接口的类,则 JDBC 驱动程序应该调用 SQLData.writeSQL 方法将它写入 SQL 数据流中。另一方面,如果该对象是实现 Ref、Blob、Clob、NClob、Struct、java.net.URL、RowId、SQLXML 或 Array 的类,则驱动程序应该将它作为相应 SQL 类型的值传递给数据库。
注:并非所有的数据库都允许将非类型 Null 发送给后端。为了获得最大的可移植性,应该使用 setNull 或 setObject(int parameterIndex, Object x, int sqlType) 方法替代 setObject(int parameterIndex, Object x)。
注:如果出现混淆,例如,如果该对象是实现多个上述指定接口的类,则此方法抛出异常。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含输入参数值的对象
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;在关闭的
PreparedStatement 上调用此方法,或者给定对象的类型不明确
boolean execute()
PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。一些预处理过的语句返回多个结果,
execute 方法处理这些复杂的语句,
executeQuery 和
executeUpdate 处理形式更简单的语句。
execute 方法返回一个 boolean 值,指示第一个结果的形式。必须调用 getResultSet 或 getUpdateCount 方法获取该结果,必须调用 getMoreResults 获取任何后续结果。
如果第一个结果是
ResultSet 对象,则返回
true;如果第一个结果是更新计数或者没有结果,则返回
- 如果发生数据库访问错误;在关闭的
PreparedStatement 上调用此方法,或者为此方法提供了参数
另请参见:
void addBatch()
将一组参数添加到此
PreparedStatement 对象的批处理命令中。
- 如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
从以下版本开始:
另请参见:
setCharacterStream
void setCharacterStream(int&parameterIndex,
int&length)
将给定参数设置为给定
Reader 对象,该对象具有给定字符数长度。在将一个非常大的 UNICODE 值输入到
LONGVARCHAR 参数时,通过
java.io.Reader 对象发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 UNICODE 到数据库 char 格式的任何必要转换。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
reader - 包含 Unicode 数据的
java.io.Reader 对象
length - 流中的字符数
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
从以下版本开始:
void setRef(int&parameterIndex,
将指定参数设置为给定
REF(&structured-type&) 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 一个 SQL
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setBlob(int&parameterIndex,
将指定参数设置为给定
java.sql.Blob 对象。在将此对象发送到数据库时,驱动程序将它转换成一个 SQL
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 一个映射 SQL
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setClob(int&parameterIndex,
将指定参数设置为给定
java.sql.Clob 对象。在将此对象发送到数据库时,驱动程序将它转换成一个 SQL
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 一个映射 SQL
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setArray(int&parameterIndex,
将指定参数设置为给定
java.sql.Array 对象。在将此对象发送到数据库时,驱动程序将它转换成一个 SQL
ARRAY 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 一个映射 SQL
Array 值的
Array 对象
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
getMetaData
getMetaData()
获取包含有关
ResultSet 对象列信息的
ResultSetMetaData 对象,
ResultSet 对象将在执行此
PreparedStatement 对象时返回。
因为 PreparedStatement 对象被预编译,所以不必执行就可以知道它将返回的 ResultSet 对象。因此,可以对 PreparedStatement 对象调用 getMetaData 方法,而不必等待执行该对象,然后再对返回的 ResultSet 对象调用 ResultSet.getMetaData 方法。
注:对于某些缺乏底层 DBMS 支持的驱动程序,使用此方法开销可能很大。
ResultSet 对象列的描述;如果驱动程序无法返回一个
ResultSetMetaData 对象,则返回
- 如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setDate(int&parameterIndex,
使用给定的
Calendar 对象将指定参数设置为给定
java.sql.Date 值。驱动程序使用
Calendar 对象构造一个 SQL
DATE 值,该值随后被驱动程序发送给数据库。利用
Calendar 对象,驱动程序可以在考虑自定义时区的情况下计算日期。如果没有指定任何
Calendar 对象,那么驱动程序将使用默认时区,该时区是运行应用程序的虚拟机所在的时区。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
cal - 驱动程序将用来构造日期的
Calendar 对象
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
从以下版本开始:
void setTime(int&parameterIndex,
使用给定的
Calendar 对象将指定参数设置为给定
java.sql.Time 值。驱动程序使用
Calendar 对象构造一个 SQL
TIME 值,该值随后被驱动程序发送给数据库。利用
Calendar 对象,驱动程序可以在考虑自定义时区的情况下计算时间。如果没有指定任何
Calendar 对象,那么驱动程序将使用默认时区,该时区是运行应用程序的虚拟机所在的时区。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
cal - 驱动程序将用来构造时间的
Calendar 对象
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
从以下版本开始:
setTimestamp
void setTimestamp(int&parameterIndex,
使用给定的
Calendar 对象将指定参数设置为给定
java.sql.Timestamp 值。驱动程序使用
Calendar 对象构造一个 SQL
TIMESTAMP 值,该值随后被驱动程序发送给数据库。利用
Calendar 对象,驱动程序可以在考虑自定义时区的情况下计算时间戳。如果没有指定任何
Calendar 对象,那么驱动程序将使用默认时区,该时区是运行应用程序的虚拟机所在的时区。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
cal - 驱动程序将用来构造时间戳的
Calendar 对象
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
从以下版本开始:
void setNull(int&parameterIndex,
int&sqlType,
&typeName)
将指定参数设置为 SQL
NULL。这种形式的
setNull 方法应该用于用户定义的类型或 REF 类型参数。用户定义类型的示例有:STRUCT、DISTINCT、JAVA_OBJECT 和指定的数组类型。
注:为了便于移植,在指定 NULL 用户定义参数或 REF 参数时,应用程序必须提供 SQL 类型代码和完全限定的 SQL 类型名称。对于户定义类型,名称是参数本身的类型名称。对于 REF 参数,名称是所引用类型的类型名称。如果 JDBC 驱动程序不需要类型代码和类型名称信息,则可以忽略这些信息。尽管此方法是供用户定义的参数和 Ref 参数使用的,但也可以使用其设置任何 JDBC 类型的 null 参数。如果该参数没有用户定义的类型或 REF 类型,则忽略给定的 typeName。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
sqlType - 取自
java.sql.Types 的一个值
typeName - SQL 用户定义类型的完全限定名称;如果该参数不是用户定义类型或 REF,则忽略它
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
sqlType 是
DATALINK、
JAVA_OBJECT、
NVARCHAR、
LONGNVARCHAR、
STRUCT 数据类型之一并且 JDBC 驱动程序不支持此数据类型,或者 JDBC 驱动程序不支持此方法
从以下版本开始:
void setURL(int&parameterIndex,
将指定参数设置为给定
java.net.URL 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL
DATALINK 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 要设置的
java.net.URL 对象
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
getParameterMetaData
getParameterMetaData()
PreparedStatement 对象的参数的编号、类型和属性。
ParameterMetaData 对象,它包含有关此
PreparedStatement 对象的每个参数标记的编号、类型和属性的信息
- 如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
从以下版本开始:
另请参见:
void setRowId(int&parameterIndex,
将指定参数设置为给定
java.sql.RowId 对象。在将此对象发送到数据库时,驱动程序将它转换成一个 SQL
ROWID 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
setNString
void setNString(int&parameterIndex,
将指定参数设置为给定
String 对象。在将此对象发送给数据库时,驱动程序将它转换成一个 SQL
NVARCHAR 或
LONGNVARCHAR 值(取决于该参数相对于驱动程序在
NVARCHAR 值上的限制的大小)。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
value - 参数值
如果 - parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符 (national character) 集;如果驱动程序检测到可能发生数据转换错误;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
setNCharacterStream
void setNCharacterStream(int&parameterIndex,
long&length)
将指定参数设置为
Reader 对象。
Reader 将读取数据,直到到达文件末尾。驱动程序执行从 Java 字符格式到数据库中国家字符集的必要转换。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
value - 参数值
length - 参数数据中的字符数。
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符集;如果驱动程序检测到可能发生数据转换错误;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setNClob(int&parameterIndex,
将指定参数设置为
java.sql.NClob 对象。在将此对象发送到数据库时,驱动程序将它转换成一个 SQL
NCLOB 值。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
value - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符集;如果驱动程序检测到可能发生数据转换错误;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setClob(int&parameterIndex,
long&length)
将指定参数设置为
Reader 对象。Reader 必须包含 length 指定的字符数,否则在执行
PreparedStatement 时将生成一个
SQLException。此方法不同于
setCharacterStream (int, Reader, int) 方法,因为它会通知驱动程序应该将参数值作为
CLOB 发送给服务器。在使用
setCharacterStream 方法时,驱动程序可能必须做一些额外的工作,以确定应该将参数数据作为
LONGVARCHAR 还是
CLOB 发送给服务器。
parameterIndex - 第一个参数的索引是 1,第二个参数的索引是 2,……
reader - 包含用于设置参数值的数据的对象。
length - 参数数据中的字符数。
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;在关闭的
PreparedStatement 上调用此方法,如果指定的长度小于 0。
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setBlob(int&parameterIndex,
&inputStream,
long&length)
将指定参数设置为
InputStream 对象。Inputstream 必须包含 length 指定的字符数,否则在执行
PreparedStatement 时将生成一个
SQLException。此方法不同于
setBinaryStream (int, InputStream, int) 方法,因为它会通知驱动程序应该将参数值作为
BLOB 发送给服务器。在使用
setBinaryStream 方法时,驱动程序可能必须做一些额外的工作,以确定应该将参数数据作为
LONGVARBINARY 还是
BLOB 发送给服务器。
parameterIndex - 第一个参数的索引是 1,第二个参数的索引是 2,……
inputStream - 包含用于设置参数值的数据的对象。
length - 参数数据中的字节数。
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;在关闭的
PreparedStatement 上调用此方法,如果指定长度小于 0,或者输入流中的字节数与指定长度不匹配。
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setNClob(int&parameterIndex,
long&length)
将指定参数设置为
Reader 对象。Reader 必须包含 length 指定的字符数,否则在执行
PreparedStatement 时将生成一个
SQLException。此方法不同于
setCharacterStream (int, Reader, int) 方法,因为它会通知驱动程序应该将参数值作为
NCLOB 发送给服务器。在使用
setCharacterStream 方法时,驱动程序可能必须做一些额外的工作,以确定应该将参数数据作为
LONGNVARCHAR 还是
NCLOB 发送给服务器。
parameterIndex - 第一个参数的索引是 1,第二个参数的索引是 2,……
reader - 包含用于设置参数值的数据的对象。
length - 参数数据中的字符数。
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果指定长度小于 0;如果驱动程序不支持国家字符集;如果驱动程序检测到可能发生数据转换错误;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setSQLXML(int&parameterIndex,
&xmlObject)
将指定参数设置为给定
java.sql.SQLXML 对象。在将此对象发送到数据库时,驱动程序将它转换成一个 SQL
parameterIndex - 第一个参数的索引是 1,第二个参数的索引是 2,……
xmlObject - 映射 SQL
SQLXML 对象
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;或者在关闭的
PreparedStatement 上调用此方法,或者
java.xml.transform.Result、
OutputStream 已经关闭(对于
SQLXML 对象)
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setObject(int&parameterIndex,
int&targetSqlType,
int&scaleOrLength)
使用给定对象设置指定参数的值。第二个参数必须是一个对象类型;对于整数值,应该使用 java.lang 的等效对象。 如果第二个参数是一个 InputStream,则该流必须包含 scaleOrLength 指定的字节数。如果第二个参数是一个 Reader,则该 Reader 必须包含 scaleOrLength 指定的字符数。如果这些条件不满足,则驱动程序在执行准备好的语句时将生成一个 SQLException。
在发送到数据库之前,给定 Java 对象将被转换为给定 targetSqlType。 如果对象具有自定义映射关系(属于实现 SQLData 接口的类),那么 JDBC 驱动程序应该调用 SQLData.writeSQL 方法将它写入 SQL 数据流。另一方面,如果该对象是实现 Ref、Blob、Clob、NClob、Struct、java.net.URL 或 Array 的类,那么驱动程序应该将它作为相应 SQL 类型的值传递给数据库。
注意,此方法可用于传递特定于数据库的抽象数据类型。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含输入参数值的对象
targetSqlType - 将发送给数据库的 SQL 类型(定义于 java.sql.Types 中)。scale 参数可以进一步限定此类型。
scaleOrLength - 对于
java.sql.Types.DECIMAL 或
java.sql.Types.NUMERIC 类型,此值是小数点后的位数。对于 Java Object 类型
InputStream 和
Reader,此值是流或 Reader 中数据的长度。对于所有其他类型,忽略此值。
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;如果在关闭的
PreparedStatement 上调用此方法,或者 x 指定的 Java Object 是一个 InputStream 或 Reader 对象,并且 scale 参数的值小于 0
targetSqlType 是
DATALINK、
JAVA_OBJECT、
NVARCHAR、
LONGNVARCHAR、
STRUCT 数据类型之一,并且 JDBC 驱动程序不支持此数据类型
从以下版本开始:
另请参见:
setAsciiStream
void setAsciiStream(int&parameterIndex,
long&length)
将指定参数设置为给定输入流,该输入流将具有指定字节数。在将一个非常大的 ASCII 值输入到
LONGVARCHAR 参数时,通过
java.io.InputStream 发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 ASCII 到数据库 char 格式的任何必要转换。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含 ASCII 参数值的 Java 输入流
length - 流中的字节数
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
从以下版本开始:
setBinaryStream
void setBinaryStream(int&parameterIndex,
long&length)
将指定参数设置为给定输入流,该输入流将具有指定字节数。在将一个非常大的二进制值输入到
LONGVARBINARY 参数时,通过
java.io.InputStream 对象发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含二进制参数值的 java 输入流
length - 流中的字节数
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
从以下版本开始:
setCharacterStream
void setCharacterStream(int&parameterIndex,
long&length)
将指定参数设置为给定
Reader 对象,该对象具有给定字符数长度。在将一个非常大的 UNICODE 值输入给
LONGVARCHAR 参数时,通过
java.io.Reader 对象发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 UNICODE 到数据库 char 格式的任何必要转换。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
reader - 包含 Unicode 数据的
java.io.Reader 对象
length - 流中的字符数
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
从以下版本开始:
setAsciiStream
void setAsciiStream(int&parameterIndex,
将指定参数设置为给定输入流。在将一个非常大的 ASCII 值输入到
LONGVARCHAR 参数时,通过
java.io.InputStream 发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 ASCII 到数据库 char 格式的任何必要转换。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
注:查询 JDBC 驱动程序文档,以确定使用带 length 参数的 setAsciiStream 是否更有效。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含 ASCII 参数值的 Java 输入流
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
setBinaryStream
void setBinaryStream(int&parameterIndex,
将指定参数设置为给定输入流。在将一个非常大的二进制值输入到
LONGVARBINARY 参数时,通过
java.io.InputStream 对象发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
注:查询 JDBC 驱动程序文档,以确定使用带 length 参数的 setBinaryStream 是否更有效。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含二进制参数值的 java 输入流
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
setCharacterStream
void setCharacterStream(int&parameterIndex,
将指定参数设置为给定
Reader 对象。在将一个非常大的 UNICODE 值输入到
LONGVARCHAR 参数时,通过
java.io.Reader 对象发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 UNICODE 到数据库 char 格式的任何必要转换。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
注:查询 JDBC 驱动程序文档,以确定使用带 length 参数的 setCharacterStream 是否更有效。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
reader - 包含 Unicode 数据的
java.io.Reader 对象
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
setNCharacterStream
void setNCharacterStream(int&parameterIndex,
将指定参数设置为
Reader 对象。
Reader 将读取数据,直到到达文件末尾。驱动程序执行从 Java 字符格式到数据库中国家字符集的必要转换。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
注:查询 JDBC 驱动程序文档,以确定使用带 length 参数的 setNCharacterStream 是否更有效。
parameterIndex - 第一个参数是 1,第二个参数是 2,……
value - 参数值
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符集;如果驱动程序检测到可能发生数据转换错误;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setClob(int&parameterIndex,
将指定参数设置为
Reader 对象。此方法不同于
setCharacterStream (int, Reader) 方法,因为它会通知驱动程序应该将参数值作为
CLOB 发送给服务器。在使用
setCharacterStream 方法时,驱动程序可能必须做一些额外的工作,以确定应该将参数数据作为
LONGVARCHAR 还是
CLOB 发送给服务器。
注:查询 JDBC 驱动程序文档,以确定使用带 length 参数的 setClob 是否更有效。
parameterIndex - 第一个参数的索引是 1,第二个参数的索引是 2,……
reader - 包含用于设置参数值的数据的对象。
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setBlob(int&parameterIndex,
&inputStream)
将指定参数设置为
InputStream 对象。此方法不同于
setBinaryStream (int, InputStream) 方法,因为它会通知驱动程序应该将参数值作为
BLOB 发送给服务器。在使用
setBinaryStream 方法时,驱动程序可能必须做一些额外的工作,以确定应该将参数数据作为
LONGVARBINARY 还是
BLOB 发送给服务器。
注:查询 JDBC 驱动程序文档,以确定使用带 length 参数的 setBlob 是否更有效。
parameterIndex - 第一个参数的索引是 1,第二个参数的索引是 2,……
inputStream - 包含用于设置参数值的数据的对象。
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
void setNClob(int&parameterIndex,
将指定参数设置为
Reader 对象。此方法不同于
setCharacterStream (int, Reader) 方法,因为它会通知驱动程序应该将参数值作为
NCLOB 发送给服务器。在使用
setCharacterStream 方法时,驱动程序可能必须做一些额外的工作,以确定应该将参数数据作为
LONGNVARCHAR 还是
NCLOB 发送给服务器。
注:查询 JDBC 驱动程序文档,以确定使用带 length 参数的 setNClob 是否更有效。
parameterIndex - 第一个参数的索引是 1,第二个参数的索引是 2,……
reader - 包含用于设置参数值的数据的对象。
- 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符集;如果驱动程序检测到可能发生数据转换错误;如果发生数据库访问错误,或者在关闭的
PreparedStatement 上调用此方法
- 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
JavaTM&PlatformStandard&Ed. 6
有关更多的 API 参考资料和开发人员文档,请参阅 。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守。另请参阅。

我要回帖

更多关于 prepared 的文章

 

随机推荐