java - JDBC、MySQL : getting back row data from PreparedStatement executes

标签 java mysql jdbc prepared-statement

我正在使用以下设置:

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.getGenerateKeys().getInt("processId"); 时,出现“未找到列”SQLException 。其代码是

addresser.setInt(1, length);
addresser.setInt(2, vertices);
addresser.setDouble(3, activity);
addresser.executeUpdate();
int processId = addresser.getGeneratedKeys().getInt("processId");

在更新长度、顶点、 Activity 的循环内。那么...什么给出了?我是否误解了prepareStatement(sqlstring, string[])方法的作用?

最佳答案

我认为你需要对返回的结果集调用 next()

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

关于java - JDBC、MySQL : getting back row data from PreparedStatement executes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1604931/

相关文章:

java - 如何组合这些 Set<?为我的 API 扩展 Vector> 过滤函数?

java - Okhttp 和 Retrofit 不能一起工作

mysql - 获取 friend 姓名的SQL表达式

mysql - 问题从批处理文件将希伯来语插入 mysql 表中

java - 无法使用 executeQuery() 发出数据操作语句

java - SQL Server 7.0 的 JDBC 驱动程序?

java - JTable 对象数组

java - 在java中迭代2个映射

php - PHP将所有行作为数组获取

java - 如何将 MS JDBC 驱动程序与 MS SQL Server 2008 Express 一起使用?