假设以下SQL语句:
INSERT INTO MATERIAL (ID, CODE, NAME) VALUES
(NULL, 'firstCode', 'firstName'),
(NULL, 'secondCode', 'secondName');
使用以下代码,其中PreparedStatement
实例ps
表示上面的SQL语句。并且已使用选项PreparedStatement
获取new String[]{"ID"}
,以指定生成的密钥的列名称:
try {
final int affectedRows = ps.executeUpdate();
assertEquals("failed to insert all entries", "2", String.valueOf(affectedRows));
final ResultSet generatedKeys = ps.getGeneratedKeys();
while (generatedKeys.next()) {
System.out.println(generatedKeys.getInt(1));
}
} catch (SQLException e) {
// some catch block
}
问题是只会检索第二行的ID
。您是否有建议如何检索所有生成的密钥?
编辑:
这是表格的定义。
CREATE TABLE IF NOT EXISTS "MATERIAL" (
"ID" INT NOT NULL AUTO_INCREMENT,
"IDMATERIAL" VARCHAR(5) NOT NULL,
"NAME" VARCHAR(100) NOT NULL
);
答案 0 :(得分:-1)
试试这个,
PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)
ResultSet rs = preparedStatement.getGeneratedKeys();
while(rs.next())
{
System.out.println(rs.getLong(1));
}