对于我的工作,我需要创建几个插入到我的表中的PrepareStatements。通常我对此没有问题,但这个问题对我来说没有任何意义。
我在给定的环境中工作,该环境已经与数据库建立了连接。 通常,在这方面创建我的陈述很简单。但在这种情况下,更新或插入不会进行。
经过一些失败后,我为测试用例做了一个单独的方法,没有任何东西会干扰连接,但即使这样也不起作用。
public void pleasedotheWorkTes() {
Connection conn = Transaction.getCurrentConnection;
PreparedStatement pepaw = null;
try {
conn.setAutoCommit(false);
String sqlSelect = " Select ID FROM Table1 WHERE ort = 'B' ";
pepaw = conn.prepareStatement(sqlSelect);
Boolean checkSelect = pepaw.execute();
String sqlInsert = " Update Table1 Set ort = 'C' WHERE ID = '10' ";
pepaw = conn.prepareStatement(sqlSelect);
Integer checkInsert = pepaw.executeUpdate();
conn.commit();
pepaw.close();
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
当 Select 语句正在运行且工作正常时。 (布尔值=真) 插入语句不会抛出错误,但只会抛出一个整数错误,并且不会更新表中的任何内容。该语句在我的数据库可视化工具中有效。
据我所知,AutoCommit 中的 Connection 需要为“False”才能更好地控制语句。最后的提交确保更改已传输,但什么也没有发生。
我有点不知道我做错了什么。我担心后台的连接会把它弄乱,但我创建了一个额外的对象并关闭了连接。
您已经使用了 sqlselect 两次——给出了正确的代码。 检查这是否有效 String sqlInsert = " 更新 Table1 Set ort = 'C' WHERE ID = '10' "; pepaw = conn.prepareStatement(sqlInsert);