2013-05-13 39 views
-2

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

一个是第一个值 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 
+0

我认为如果您使用'try ... catch'并在您的问题中输出* error *,它将更容易帮助您。 – Azad 2013-05-13 21:17:43

+0

正如我注意到你使用'''s1'这是一个字段,并不需要它,试试这个:'UPDATE user0 SET“+ s1 +”='“+ s3 +”'WHERE“+ s1 +”='“ + s2 +“'”“ – Azad 2013-05-13 21:21:27

回答

0

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

public void Change(String username, String a, String b) throws SQLException{...} 
0

我觉得你对所有的报价都有问题。最好是用什么PreparedStatement所提供的,例如:

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

可能与你将能够解决您的问题。

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()而不是​​。它将返回一个对应于更新行数的整数。然后,您可以在控制台中写入该号码以查看您的更新是否正常。请记住,executeUpdate()仅适用于UPDATEINSERTDELETE :)