-2

我在 java-eclipse 中有一个代码可以用 mysql 更新表中的信息,但是在运行此函数后,表中选定行中的值没有更新。例如,我想替换列中“a”的值“b” “用户名”请帮帮我:(

a 是第一个值 b 是我想用用户名替换的值是我的代码的一列的名称:

   public void Change("username","a","b") throws SQLException{
        prs=connect.prepareStatement( "UPDATE user0 SET " +s1+ "='" +s3+ "' WHERE '" +s1+ "'='" + s2+"'");
        prs.execute();      
    }// end of function change
4

3 回答 3

0

我希望这不是您的代码的确切摘录。如果是,那么您应该将原型部分更改为

void Change(String s3, String s1, String s2) throws SQLException

现在,代码本身很容易发生 SQL 注入。

看到您使用的是 PreparedStatement,您应该首先声明它:

PreparedStatement prs;

之后,您应该根据它们的类型设置参数。在此处查看如何使用 PreparedStatement:http: //docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

最后但同样重要的是,请尝试格式化您在问题中输入的代码。祝你好运!:)

稍后编辑:您还应该使用executeUpdate()而不是execute(). 它将返回一个与更新的行数相对应的整数。然后,您可以在控制台中写入该数字以查看您的更新是否正常。请记住,这executeUpdate()是为了UPDATEINSERT而且DELETE只是:)

于 2013-05-13T21:23:02.190 回答
0

那甚至不应该编译,你的语法是错误的:

public void Change(String username, String a, String b) throws SQLException{...}
于 2013-05-13T21:22:31.380 回答
0

我认为你对所有引用都有问题。最好使用PreparedStatement必须提供的东西,例如:

prs = connect.prepareStatement("UPDATE Users SET UserName = ? WHERE IDUser = ?");
prs.setString(1, "some String");
prs.setInt(2, 145);
prs.execute();

可能有了它,您就可以解决问题。

于 2013-05-13T21:22:47.310 回答