如何更新MySQL中的多个列(通过Java)?

时间:2015-07-07 21:51:43

标签: java mysql syntax

所以这只是我的代码片段:

Sql = "update budgetreport" +
                " set sales="+salesText.getText()+
                " where quarter="+ qTracker+
                " set cogs="+cogsText.getText()+
                " where quarter="+ qTracker;
        try {
            myStmt.executeUpdate(Sql);
        } catch (Exception e1) {
            e1.printStackTrace();
        }

我的问题是,它说有一种SQL语法。我只用第一部分来运行它:

Sql = "update budgetreport" +
                " set sales="+salesText.getText()+
                " where quarter="+ qTracker;
        try {
            myStmt.executeUpdate(Sql);
        } catch (Exception e1) {
            e1.printStackTrace();
        }

它运行良好。但我不知道该做什么才能使我的第一段代码功能。感谢您抽出宝贵时间阅读/回答:)! ......

5 个答案:

答案 0 :(得分:5)

每次更新只允许一个SET关键字

String sql = "update budgetreport" +
                " set sales=?, cogs=?" + 
                " where quarter=?";

PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1, salesText.getText());
...
preparedStatement.executeUpdate();            

答案 1 :(得分:0)

试试这个:

Sql = "update budgetreport" +
      " set sales="+salesText.getText()+
      ", cogs="+cogsText.getText()+
      " where quarter="+ qTracker;

注意SQL注入攻击和错误,不应该与未经检查的文本框内容连接。

答案 2 :(得分:0)

使用prepared statement。它更安全。

String sql = "update budgetreport set sales=? where quarter=?";

PreparedStatement statement = con.prepareStatement(sql);

statement.setString(1, salesText.getText());
statement.setString(2, qTracker.toString());

statement.executeUpdate();

答案 3 :(得分:-1)

您应该从这里开始:http://www.w3schools.com/sql/sql_update.asp,因为您的SQL语法不正确。试试

update budgetreport set sales=?,cogs=? where quarter=?

上述内容应该是一份准备好的声明。请参阅:http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html

或者,你可以通过使用像这样的轻量级框架来缓解你的生活:http://www.sql2o.org/它抽象PreparedStatements并使你的代码更具可读性。

答案 4 :(得分:-1)

更新查询的语法不正确,因此您需要更改它>

更新表

SET column1 = expression1,

column2 = expression2,
....

WHERE条件;

例如

Sql = update budgetreport" + " set sales="+salesText.getText()+ ", cogs="+cogsText.getText()+ " where quarter="+ qTracker;"