Java 如何使用变量更新列?
我有两个问题: 1) 由于我想使用同一行更新许多列,如何在更新查询中调用变量。 我在INSERT和SELECT中执行了此操作,但它会导致更新错误 我在哪里使用的:Java 如何使用变量更新列?,java,mysql,sql-update,Java,Mysql,Sql Update,我有两个问题: 1) 由于我想使用同一行更新许多列,如何在更新查询中调用变量。 我在INSERT和SELECT中执行了此操作,但它会导致更新错误 我在哪里使用的: string x="term"; try{ Connection con = DriverManager.getConnection("jdbc:mysql://localhost/ourproject?useUnicode=true&characterEncoding=utf8&user=luffy&am
string x="term";
try{
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/ourproject?useUnicode=true&characterEncoding=utf8&user=luffy&password=111111");
Statement stmt=(Statement) con.createStatement();
String select = "SELECT ('" + x + "') FROM test WHERE doc=0";
stmt.executeUpdate(select);
}
catch(Exception e)
{
e.printStackTrace();
}
2) 如果我可以调用一个变量,我如何通过添加1来更新它的值?
我试过这个,它成功了:
try{
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/ourproject?useUnicode=true&characterEncoding=utf8&user=luffy&password=111111");
Statement stmt=(Statement) con.createStatement();
String update = "UPDATE test SET term=term+1 WHERE doc=0";
PreparedStatement updateQuey =con.prepareStatement(update);
updateQuery.executeUpdate(update);
}
catch(Exception e)
{
e.printStackTrace();
}
但是我需要调用X,因为我想对多个列使用同一行。
提前感谢您可以使用带有参数的准备好的语句。来自甲骨文的消息 在你的背景下:
String update = "UPDATE test SET term = ? WHERE doc=0";
PreparedStatement updateQuey = con.prepareStatement(update);
updateQuey.setInt(1, x);
updateQuery.executeUpdate();
顺便说一句:如果您对语句有明确的说明,我认为您不需要更新字符串作为
executeUpdate()
的参数
String update = "UPDATE test SET term=" + yourVariable + " WHERE doc=0";
但总是选择预处理语句而不是语句,以避免sql注入,这会使您的应用程序/软件更可靠,更不易受攻击。有关准备声明,请参阅luksch发布的答案