2009-07-28 124 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(); 

也就是說在創建連接對象本身能自動提交真實吧。所以,它會立即反映到你的數據庫中的變化。

否則後烏爾交易進行連接的承諾,以確保您的交易將被保存在數據庫中