我正在尝试更新我的本地sqlite表。
我的executeUpdate()
返回1但不更新。
我无法添加完整的可运行代码,因为它需要使用本地数据库。
这是我更新表的代码块。
protected int notGuncelle(int gelenId, String yeniNot) {
int update = -1;
try {
update = st.executeUpdate("UPDATE notlar SET 'not' = " + "'yeniNot'" + " WHERE id = " + gelenId);
System.out.println(update);
} catch (SQLException ex) {
//Logger.getLogger(SQLiteFunctions.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Not güncelleme hatası: " + ex.getLocalizedMessage());
}
return update;
}
现在下面的代码返回-1但是有效。我真的很困惑。我认为这是因为将yeniNot
变量传递给查询的方式。那里有些不对劲但我不知道是什么。
protected int notGuncelle(int gelenId, String yeniNot) {
int update = -1;
System.out.println(yeniNot);
try {
PreparedStatement st = this.conn.prepareStatement("UPDATE notlar SET 'not' = ? WHERE id = ?");
st.setString(1, yeniNot);
st.setString(2, "" + gelenId);
st.executeUpdate();
//update = st.executeUpdate("UPDATE notlar SET 'not' = " + yeniNot + " WHERE id = " + gelenId);
System.out.println(update);
} catch (SQLException ex) {
//Logger.getLogger(SQLiteFunctions.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("Not güncelleme hatası: " + ex.getLocalizedMessage());
}
return update;
}
答案 0 :(得分:1)
好的,我找到了解决方案。
必须更换
update = st.executeUpdate("UPDATE notlar SET 'not' = " + "'yeniNot'" + " WHERE id = " + gelenId);
用这个
update = st.executeUpdate("UPDATE notlar SET 'not' = + '"+yeniNot+"'" + " " + "WHERE id = " + gelenId);
"'yeniNot'"
是将String参数传递给查询的错误样式
它应该是>> '"+yeniNot+"'
答案 1 :(得分:0)
如果您已将autocommit设置为false
con.setAutoCommit(false);
然后你必须通过调用方法
手动提交 con.commit();
当然,您可以将autocommit设置为true,然后将每个语句视为单个事务