所以这只是我的代码片段:
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();
}
它运行良好。但我不知道该做什么才能使我的第一段代码功能。感谢您抽出宝贵时间阅读/回答:)! ......
答案 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;"