2013-03-23 124 views
0

守則:將行插入MySQL DB?

sql = "INSERT INTO `admin` (`id`,`username`,`password`,`access`) VALUES ('"+(numIds+1)+"','"+addedUsername+"','"+addedPassword+"','"+addedAccess+"');"; 

Statement statementAdd = (Statement) DBconnection.createStatement(); 
result = statementAdd.executeUpdate(sql); 

的錯誤:

MySQLLogin.java:133: error: incompatible types 
      result = statementAdd.executeUpdate(sql); 
              ^
required: ResultSet 
found: int 
1 error 

任何想法?

+0

請學習使用預處理語句。您的代碼將是更清潔,更健壯,不容易受到SQL注入阿塔中正。 http://download.oracle.com/javase/tutorial/jdbc/basics/prepared.html – 2013-03-23 14:22:38

+2

@ user2202426:告訴我們'結果'是如何聲明的。 'ExecuteUpdate'返回一個int,而不是ResultSet。 http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/Statement.html – 2013-03-23 14:24:02

回答

4

executeUpdate的返回整數看來你是將其分配到結果集

+0

我該如何改變呢? – user2202426 2013-03-23 16:05:36

+0

int count = statementAdd.executeUpdate(sql); – Pragnani 2013-03-23 17:18:47

0

對於這一點:

'"+(numIds+1)+"' 

您可能是試圖做數學用細繩插入帶有字符串轉換成數字領域。鑑於你的錯誤信息,我懷疑後者。這是使它成爲字符串的單引號。

0

executeUpdate返回受影響的行數(在你的情況下,它會返回插入的行數,但你嘗試將分配返回intResultSet對象

所以只是將其更改爲。:

int insertedRows = statementAdd.executeUpdate(sql); 

更多信息,請參見javadocs for Statement class