我使用PreparedStatement使用單個查詢中插入多行:JDBC如何使用多個值查詢從單個插入中獲取所有生成的密鑰?
String query = "insert into MyTable (a,b,c) values (?,?,?),(?,?,?),(?,?,?),(?,?,?)"; // insert 4 rows in a single query
PreparedStatement stmt = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
// .. here: loop to set all 4 x 3 values in my prepared statement
而且我想在MSSQL數據庫生成的ID。我不確定execute
使用哪種味道。
的方法不返回預期ResultSet
:
boolean thingy = stmt.execute();
System.out.println("execute returned ", thingy); // false: meaning no result set
ResultSet result = stmt.getResultSet(); // result is null
的executeUpdate()
方法只返回ResultSet
:
int rowCount = stmt.executeUpdate();
System.out.println(rowCount + " rows updated"); // 4 rows updated
ResultSet result = stmt.getGeneratedKeys();
// there's only one result:
result.next(); // true
int ID1 = result.getInt(1); // good
result.next(); // false, no more rows
是否有可能與一個單一的INSERT得到生成的ID?出於性能原因,我不想發送多個INSERT查詢。
DB:MS SQL服務器11(2012)
網址爲:jdbc:JTDS:SQLSERVER:// ...
司機:net.sourceforge.jtds.jdbc.Driver JTDS版本1.3.1
您正在使用哪種DBMS JDBC驅動程序? –
更新後的驅動程序信息 – sebnukem
jTDS驅動程序非常過時。它是否與微軟驅動程序一起工作? –