我在将数据插入数据库时遇到问题。它返回的是正在插入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