我有一个 sqlite 数据库,其中的表 salesman
具有以下属性:
----------------------
|code|name|isSelected|
----------------------
默认情况下,每个条目的 isSelected
属性下都会有 0
。逻辑是用户在 JCombobox 中按姓名选择推销员。选择后,所选推销员的 isSelected
属性下的 0
应为 1
。
例如,给定销售员
的数据输入:
----------------------
|code|name|isSelected|
----------------------
|0001|John|0 |
----------------------
然后用户选择 John
,因此按理说,0
应更新为 1
。
这是我的更新代码:
public void updateSalesman(String selection){
String updateQuery = "UPDATE SALESMAN SET isSelected = '1' WHERE name = 'selection'"; //problem here
Connection connection = null;
PreparedStatement ps = null;
try{
connection = DBConnection.getConnection();
ps = connection.prepareStatement(updateQuery);
ps.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}
}
我有将 0
更新为 1
的更新查询,但我不知道如何在方法中指示根据用户的选择仅更新 1 个推销员。
编辑:将工作代码更改为:
public void updateSalesman(String selection){
String updateQuery = "UPDATE salesman SET isSelected = ? WHERE name = ? AND isSelected = ?";
Connection connection = null;
PreparedStatement ps = null;
try{
connection = DBConnection.getConnection();
ps = connection.prepareStatement(updateQuery);
ps.setInt(1, 1);
ps.setString(2, "selection");
ps.setInt(3, 0);
ps.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally {
if (ps != null) {
try {
ps.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
if (connection!= null) {
try {
connection.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
最初,我使用这行代码来测试更新是否正常:
"UPDATE salesman SET isSelected = 1 WHERE isSelected = 0";
并且,使用 SQLite 的数据库浏览器检查数据库中的更新,我看到所有 0
条目都更新为 1
,这表明代码正在运行但不是我想要的那样(基于 1 个选定的推销员)。但应用新代码(已更新,如上所示)后,数据库中没有进行任何更改。有什么帮助吗?使用更新后的代码,NetBeans 控制台没有任何问题,除了实际更新之外,一切都很顺利
编辑:这一行解决了所有问题(感谢下面的评论):
String updateQuery = "UPDATE SALESMAN SET isSelected = '1' WHERE name = '" + selection + "'";
最佳答案
使用以下代码:
String updateTableSQL = "UPDATE SALESMAN SET isSelected = ? WHERE name = ?";
PreparedStatement preparedStatement = dbConnection.prepareStatement(updateTableSQL);
preparedStatement.setInt(1, 1);
preparedStatement.setString(2, "selection");
// execute insert SQL stetement
preparedStatement .executeUpdate();
资源链接:
关于java - 根据参数/用户选择更新 sqlite 表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38045641/