我正在使用以下设置:
public MySQLProcessWriter(Connection con) throws SQLException {
String returnNames[] = {"processId","length","vertices"};
addresser = con.prepareStatement("INSERT INTO addressbook (length, vertices, activity) VALUES (?, ?, ?)", returnNames);
}
processId
对应于地址簿表中的自动递增列。所以我的想法是:我有一个重复的插入,我得到了一些插入的内容+自动生成的processId。但是,当我在执行预准备语句后尝试addresser.getGeneratedKeys().getInt("processId");
(在适当的值设置之后)时,我得到一个“未找到列”SQLException。代码是
addresser.setInt(1, length);
addresser.setInt(2, vertices);
addresser.setDouble(3, activity);
addresser.executeUpdate();
int processId = addresser.getGeneratedKeys().getInt("processId");
在更新长度,顶点,活动的循环中。那么...给出了什么?我是否误解了prepareStatement(sqlstring,string [])方法的作用?
答案 0 :(得分:2)
我认为您需要在返回的结果集
上调用next()ResultSet keys = addresser.getGeneratedKeys();
int processId = -1;
if (keys.next())
{
processId = keys.getInt("processId");
}
答案 1 :(得分:0)
在拨打next()
ResultSet
返回的getGeneratedKeys()
上致电getInt()
方法
ResultSet rs = addresser.getGeneratedKeys();
int processId = 0;
if (rs.next()) {
processId = rs.getInt("processId");
}