我在將數據插入數據庫時遇到問題。它返回的是正在插入1行,但是當我實際檢查數據庫時,實際上並未插入任何新行。JAVA - 插入數據庫問題
這是我的更新功能:
public int update(String sqlStatement) {
int rows = 0;
try {
Statement st = this.conn.createStatement();
rows = st.executeUpdate(sqlStatement);
this.conn.commit();
st.close();
} catch (Exception err) {
System.out.println("Got err doing update: " + err.getMessage());
}
return rows;
}
下面是通過它的對象調用它的函數:
db = new Database();
int rows = 0;
String sql = "INSERT INTO tblStudent (firstName, lastName, username, password, isAdmin) ";
sql += String.format("VALUES ('%s', '%s', '%s', '%s', %d)", fName, lName, username, passwd, isAdmin);
System.out.println("Trying " + sql);
if((rows = db.update(sql)) == 0) {
System.out.println("Could not create new user");
throw new Exception();
}
System.out.println("Rows " + rows);
正如我所說的,它的報告說,一個行插入到數據庫,但實際上沒有任何東西。該數據庫是一個MS Access數據庫。
任何幫助表示讚賞。
G
首先,使用prepare語句而不是手動連接。 – h3xStream 2010-08-11 19:59:49
當您在此應用程序之外檢查數據庫時,應用程序連接是否已關閉? 當您使用此連接從您的應用程序執行SELECT查詢時,那裏的數據是? – 2010-08-11 20:14:44
在我進行插入之前,我做了一個select,檢查數據庫中是否存在某些用戶。此選擇正常工作,並正確地從同一個表中獲取數據。 RE:使用prepare語句。我意識到還有其他方法可以做到這一點,但我想試着理解爲什麼這種特殊的方式不起作用。 – SynackSA 2010-08-11 20:18:46