【问题标题】:Update sqlite table attribute based on parameter / user selection根据参数/用户选择更新sqlite表属性
【发布时间】:2016-06-27 03:48:58
【问题描述】:

我有一个带有表salesman 的sqlite 数据库,具有以下属性:

----------------------
|code|name|isSelected|
----------------------

默认情况下,每个条目在isSelected 属性下都有0。逻辑是用户在 JCombobox 中按名称选择销售员。选择后,isSelected 属性下选定的销售员中的0 应为1

例如,给定Salesman的数据输入:

----------------------
|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 的 DB Browser 检查数据库中的更新,我看到所有 0 条目都更新为 1,这表明代码正在运行,但不是我想要的(基于 1 名选定的推销员)。但是在应用新代码(更新,如上所示)后,数据库中没有进行任何更改。有什么帮助吗?使用更新后的代码,NetBeans 控制台没有问题,一切都很顺利,除了实际更新

编辑:这一行解决了所有问题(感谢下面的评论):

String updateQuery = "UPDATE SALESMAN SET isSelected = '1' WHERE name = '" + selection + "'"; 

【问题讨论】:

  • 您错误地应用了参数:String updateQuery = "UPDATE SALESMAN SET isSelected = '1' WHERE name = '" + selection + "'";您不能将名为 selection 的变量应用为文字字符串。
  • @DevilsHnd brooo 你的台词解决了一切,谢谢!!

标签: java sqlite sql-update


【解决方案1】:

使用以下代码:

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();

资源链接:

JDBC PreparedStatement example – Update a record

【讨论】:

  • 应用了上面的代码,但没有对数据库进行更新:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 2020-05-12
  • 2011-06-06
  • 1970-01-01
相关资源
最近更新 更多