0

我有两个问题:

1)我如何在 UPDATE Query 中调用变量,因为我想使用同一行来更新很多列。我在 INSERT 和 SELECT 中执行了此操作,但它在 UPDATE 中导致错误我在哪里使用:

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 ,因为我想将同一行用于多个列。提前谢谢

4

2 回答 2

0

如果您对陈述很具体,那么

 String update = "UPDATE test SET term=" + yourVariable + " WHERE doc=0"; 

但总是更喜欢准备好的语句而不是语句,以避免 sql 注入,这使您的应用程序/软件更可靠,更不容易受到攻击。对于准备声明,请参阅 luksch 发布的答案

于 2013-05-19T16:45:38.223 回答
0

您可以使用带参数的准备好的语句。这是oracle关于它的文档。

在您的上下文中:

String update = "UPDATE test SET term = ? WHERE doc=0"; 
PreparedStatement updateQuey = con.prepareStatement(update);
updateQuey.setInt(1, x);
updateQuery.executeUpdate();

顺便说一句:我认为您不需要更新字符串作为参数executeUpdate()

于 2013-05-19T16:18:21.350 回答