准备好的声明失败
问题描述:
我正在使用准备好的语句,它应该(使用SQL & JDBC)将数据插入数据表。我正在使用一个删除可以正常工作的数据,但是插入的数据不会将任何数据插入到数据表中,也不会产生错误或警告。什么可能导致准备好的陈述以这种方式失败? 可以在准备好的语句中插入一个空值导致这个?准备好的声明失败
答
“失败,但不会产生错误”是什么意思?你怎么知道它失败了 - 是否实际上没有插入数据?也许你没有进行交易?
答
解决问题的两种方法。
1路:
Connection con = DriverManager.getConnection(DB_host, DB_UserName, DB_UserPassword);
con.setAutoCommit(true);
String sql = "INSERT INTO Users (fName, lastName, userName, password) VALUES (?, ?, ?, ?)";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, "fName");
stmt.setString(2, "lastName");
stmt.setString(3, "userName");
stmt.setString(4, "password");
stmt.executeUpdate();
第二个办法:
Connection con = DriverManager.getConnection(DB_host, DB_UserName, DB_UserPassword);
String sql = "INSERT INTO Users (fName, lastName, userName, password) VALUES (?, ?, ?, ?)";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setString(1, "fName");
stmt.setString(2, "lastName");
stmt.setString(3, "userName");
stmt.setString(4, "password");
stmt.executeUpdate();
con.commit();
也就是说在创建连接对象本身能自动提交真实吧。所以,它会立即反映到你的数据库中的变化。
否则后乌尔交易进行连接的承诺,以确保您的交易将被保存在数据库中
你可以张贴一些示例代码? – 2009-07-28 22:37:40
ChssPly76完全正确 – 2009-07-28 22:39:49