2009-07-28 137 views
0

我正在使用准备好的语句,它应该(使用SQL & JDBC)将数据插入数据表。我正在使用一个删除可以正常工作的数据,但是插入的数据不会将任何数据插入到数据表中,也不会产生错误或警告。什么可能导致准备好的陈述以这种方式失败? 可以在准备好的语句中插入一个空值导致这个?准备好的声明失败

+0

你可以张贴一些示例代码? – 2009-07-28 22:37:40

+0

ChssPly76完全正确 – 2009-07-28 22:39:49

回答

2

“失败,但不会产生错误”是什么意思?你怎么知道它失败了 - 是否实际上没有插入数据?也许你没有进行交易?

0

解决问题的两种方法。

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(); 

也就是说在创建连接对象本身能自动提交真实吧。所以,它会立即反映到你的数据库中的变化。

否则后乌尔交易进行连接的承诺,以确保您的交易将被保存在数据库中