2013-05-13 13 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 :)