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

How do I update multiple columns in MySQL (Through Java)?

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

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

它 运行 很好。但我不明白该怎么做才能让我的第一段代码发挥作用。感谢您花时间访问 read/answer :)! ......

试试这个:

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

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

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

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

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

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

您可能应该从这里开始: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 并使您的代码更具可读性。

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

更新table

SET column1 = expression1,

column2 = expression2,
....

WHERE条件;

例如

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