根据参数/用户选择

时间:2016-06-27 03:48:59

标签: java sqlite sql-update

我有一个带有表salesman的sqlite数据库,其中包含以下属性:

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

默认情况下,每个条目在0属性下都有isSelected。逻辑是用户在JCombobox中按名称选择推销员。选择后,0属性下所选推销员中的isSelected应为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();            
    }        
}

我有01的更新查询,但我不知道如何在方法中指明只根据用户的选择更新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";

并且,使用DB Browser for DBite,检查数据库中的更新,我看到所有0条目都更新为1,这表明代码正在运行但不是我想要的是(基于1个选定的推销员)。但在应用新代码(更新,见上文)后,数据库中没有进行任何更改。有帮助吗?使用更新的代码,NetBeans控制台没有任何问题,除了实际更新外,一切都很顺利

编辑:这一行解决了这一切(感谢下面的评论):

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

1 个答案:

答案 0 :(得分: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