java - 根据参数/用户选择更新 sqlite 表属性

标签 java sqlite sql-update

我有一个 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();

资源链接:

JDBC PreparedStatement example – Update a record

关于java - 根据参数/用户选择更新 sqlite 表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38045641/

相关文章:

database - 使用sqlite增加锁定超时,默认值是多少?

postgresql - 如何在 Postgres 9.4 中对 JSONB 类型的列执行更新操作

php - 在 mysql PDO 中更新后选择行

php - 更新值而不删除其他值并删除 PHP CONCAT 列中的现有值

java - 使用身份 id 在 derby 中导入数据

java - 我想在java中从数组中分离相似的值

java - OR 组合子在 Java IF 语句中不起作用

android - 多个 SQLite 表无法正常工作

iPhone 存储图像的最佳方式

Java 初学者需要建议吗?如果(金额==字符串)?