我正在使用以下设置:

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 [])方法的作用?

最佳答案

我认为您需要在返回的结果集上调用next()

ResultSet keys = addresser.getGeneratedKeys();
int processId = -1;
if (keys.next())
{
  processId = keys.getInt("processId");
}

09-16 03:30