我想问一个很基础的问题:java.sql.Connection中的prepareStatement(String sql,String[] columnNames)方法如何使用?最好能举个例子!
(创建一个能返回由给定数组指定的自动生成键的默认 PreparedStatement 对象。此数组包含目标表中列的名称,而目标表包含应该返回的自动生成键。)文档中的解释我还是看不懂!
拜托!
(创建一个能返回由给定数组指定的自动生成键的默认 PreparedStatement 对象。此数组包含目标表中列的名称,而目标表包含应该返回的自动生成键。)文档中的解释我还是看不懂!
拜托!
Statement是一个普通的SQL分析容器,Statement在executeQuery或者executeUpdate
的时候,才指定我们要分析的SQL语句是谁PreparedStatement是一个预编译的分析容器,它在容器在创建的同时即指定要分析的SQL语句
PreparedStatement使用场合
PreparedStatement是一个预编译的容器,对于一条将会被重复执行的代码来说,它只是被分析一次
而statement容器将会分析多次
/**
* 注意:使用了statement分析容器,这条写入的语句将会被分析10次
*/
for(int i=0;i<10;i++){
String sql = "INSERT INTO EMP(EMPNO,ENAME) VALUES(SEQ.NEXTVAL,'ZHANGSHAN')";
ps.executeUpdate(sql);
}
//这里,制定要分析的sql语句,预分析的
ps = con.prepareStatement("INSERT INTO EMP(EMPNO,ENAME) VALUES(SEQ.NEXTVAL,?)");
/**
* 在上面的SQL语句中的问号(?)表示的是预插入的值,在下面的确ps.setString(1, "zhangshan"+i)里的这个1就表示
* SQL语句中出现的第一个问号,如果在条SQL语句中会出现第二个问号,那个就是ps.setString(2, "")
* 注意:使用了PreparedStatement分析容器,这条写入的语句将会被分析1次
*/
for(int i=0;i<10;i++){
ps.setString(1, "zhangshan"+i);
ps.executeUpdate();
}希望对你有帮助
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.execute();
sql - 可能包含一个或多个 '?' IN 参数占位符的 SQL 语句
columnNames - 指示应该从一个或多个插入行中返回的那些列的列名称组成的数组
返回:
一个包含预编译语句的新 PreparedStatement 对象,该对象能够返回由给定列名称数组指定的自动生成键
如果未指定表示自动生成键的列,则驱动自己确定最能表示自动生成键的列,然后返回。
prepareStatement(String sql,String[] columnNames)这个方法中的第一个参数是SQL语句,这个SQL语句是带有问号的那种,
第二个参数是对SQL语句中的问号的赋值。
case:
String sql = "INSERT INTO EMP(EMPNO,ENAME) VALUES(?,?)";
String[] array = { "1", "Dawei"};
con.prepareStatement(sql, array);
如果我没有记错的话,这样应该是没有问题的
可能是吧,好久不用JDBC,记性不太好