说明 工作台中的自动提交值已设置为0(零),然后我将记录插入表中,并通过jdbc在Java App客户端中成功提交事务。我在命令行中执行select查询并且已成功获取刚插入的记录,但在workbech中执行相同的查询脚本,无法获取刚插入的记录。只有在工作台中执行commit命令后,才能查询记录。
如何重复:
建议修复: 工作台应该读取已提交的记录,而不是再次执行commit命令以通过jdbc显示已提交的记录。
下面是我的相同
的jdbc代码 int recordInserted = 0;
PreparedStatement prepStmt = null;
try {
conn = new DatabaseConnection().getSQLConnection();
if (conn != null) {
String sql = "INSERT INTO customerinfo (CustID, Customer_Name, Customer_License) VALUES (?, ?, ?)";
prepStmt = conn.prepareStatement(sql);
prepStmt.setString(1, registerRecords.getCustomerID());
prepStmt.setString(2, registerRecords.getCustomerName());
prepStmt.setString(3, registerRecords.getCustomerLic());
recordInserted = prepStmt.executeUpdate();
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
conn.close();
prepStmt.close();
conn = null;
prepStmt=null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 0 :(得分:3)
- 在mysql workbench中设置autocommit = 0
醇>
这意味着您必须从Java手动提交事务。
- 通过jdbc从java app向表中插入记录,并通过java提交事务。
醇>
但你实际上从未实际使用Java。你应该这样做:
<pre>
array (size=4)
0 =>
array (size=3)
0 => string 'white' (length=5)
1 => string 'new' (length=3)
2 => string '200' (length=3)
1 =>
array (size=3)
0 => string 'red' (length=3)
1 => string 'new' (length=3)
2 => string '200' (length=3)
2 =>
array (size=3)
0 => string 'white' (length=5)
1 => string 'new' (length=3)
2 => string '250' (length=3)
3 =>
array (size=3)
0 => string 'red' (length=3)
1 => string 'new' (length=3)
2 => string '250' (length=3)
</pre>
完整代码:
conn.commit();