Java 如何使用变量更新列?

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

我有两个问题:

1) 由于我想使用同一行更新许多列,如何在更新查询中调用变量。 我在INSERT和SELECT中执行了此操作,但它会导致更新错误 我在哪里使用的:

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发布的答案