gra*_*aci 17 java mysql prepared-statement mysql-connector
我有一个PreparedStatement,例如:
PreparedStatement preparedStatement = connect.prepareStatement("INSERT into employee (id, time, name" + "(?,?,?)",Statement.RETURN_GENERATED_KEYS);
ResultSet tableKeys = preparedStatement.getGeneratedKeys();
preparedStatement.executeUpdate();
tableKeys.next();
int autoGeneratedID = tableKeys.getInt(1);
preparedStatement.setInt(1,autoGeneratedID);
preparedStatement.setTimestamp(2, new java.sql.Timestamp(new java.util.Date().getTime()));
preparedStatement.setString(3, "Test");
preparedStatement.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
如您所见,Employee表具有自动递增的ID.我需要基本上使用preparedStatement自动添加它.谁能告诉我哪里出错了并纠正我?现在它只是给我一个与Statement相关的错误.
lc.*_*lc. 30
将列完全从INSERT语句中删除.它将由数据库引擎生成.您的查询应该是:
INSERT INTO employee (time, name)
VALUES (?, ?)
Run Code Online (Sandbox Code Playgroud)
其次,您必须先执行插入,然后从结果中获取密钥.
我相信你的代码应该是:
PreparedStatement preparedStatement =
connect.prepareStatement("INSERT into employee (time, name) VALUES (?,?)",
Statement.RETURN_GENERATED_KEYS);
preparedStatement.setTimestamp(1,
new java.sql.Timestamp(new java.util.Date().getTime()));
preparedStatement.setString(2, "Test");
preparedStatement.executeUpdate();
ResultSet tableKeys = preparedStatement.getGeneratedKeys();
tableKeys.next();
int autoGeneratedID = tableKeys.getInt(1);
Run Code Online (Sandbox Code Playgroud)
请注意,此示例不检查已执行语句的成功或返回键的存在.
| 归档时间: |
|
| 查看次数: |
63053 次 |
| 最近记录: |