2013-10-09 61 views
0

我有一個問題,在獎勵表中插入值。嘗試解決它,並找到其他職位,但我找不到任何解決方案。列數不匹配在mysql數據庫的第1行值計數

String sql1 = "INSERT INTO rewards(project_id, 1st_reward,1st_description,     2nd_reward, 2nd_description, 3rd_reward, 3rd_description, 4th_reward, 4th_description, 5th_reward, 5th_description) " 
             + "values('" 
             + projectId 
             + "','" 
             + rwd1.getText().toString() 
             + "','" 
             + rwd1Desc.getText().toString() 
             + "','" 
             + rwd1.getText().toString() 
             + "','" 
             + rwd2.getText().toString() 
             + "','" 
             + rwd2Desc.getText().toString() 
             + "','" 
             + rwd3.getText().toString() 
             + "','" 
             + rwd3Desc.getText().toString() 
             + "','" 
             + rwd4.getText().toString() 
             + "','" 
             + rwd4Desc.getText().toString() 
             + "','" 
             + rwd5.getText().toString() 
             + "','" 
             + rwd5Desc.getText().toString() 
             + "')"; 
stmt.executeUpdate(sql1); 
+1

這是我們如何組裝查詢。 – ppeterka

+0

這種裝配查詢,是不是最佳實踐? –

+0

是的,您應該使用預準備語句,而不是連接字符串。這是更安全,友善,通常更好。 – ppeterka

回答

0

你有11列和12個值...

你有一個額外的

+ "','" 
+ rwd1.getText().toString() 
+ "','" 
+0

非常感謝你,它適合我。 –

0

你在SQL語句中提到的11個列,但它設置12個值。這是造成

列數並不在行1中的Java和MySQL數據庫

更新查詢中使用的列權數,然後使用相同數量和類型相匹配的值數值。

+0

非常感謝您爲我工作。 –

0

重複的列別人在你的價值觀一提的是rwd1.getText().toString()電話中的一個:

... 
+ rwd1.getText().toString() 
+ "','" 
+ rwd1Desc.getText().toString() 
+ "','" 
+ rwd1.getText().toString() 
... 

另一種更乾淨地組裝您的查詢的方法是:

EntityManager em; 

Query query = em.createQuery("INSERT INTO rewards(project_id,1st_reward,1st_description,2nd_reward,2nd_description,3rd_reward,3rd_description,4th_reward,4th_description,5th_reward,5th_description) values (:projectId,:rwd1,:rwd1Desc,:rwd2,:rwd2Desc,:rwd3,:rwd3Desc,:rwd4,:rwd4Desc,:rwd5,:rwd5Desc)"); 

query.setParameter("projectId", projectId); 
query.setParameter("rwd1", rwd1.getText().toString()); 
query.setParameter("rwd1Desc", rwd1Desc.getText().toString()); 
query.setParameter("rwd2", rwd2.getText().toString()); 
query.setParameter("rwd2Desc", rwd2Desc.getText().toString()); 
query.setParameter("rwd3", rwd3.getText().toString()); 
query.setParameter("rwd3Desc", rwd3Desc.getText().toString()); 
query.setParameter("rwd4", rwd4.getText().toString()); 
query.setParameter("rwd4Desc", rwd4Desc.getText().toString()); 
query.setParameter("rwd5", rwd5.getText().toString()); 
query.setParameter("rwd5Desc", rwd5Desc.getText().toString()); 

query.executeUpdate(); 

這裏有一些更多的資源用於此方法:herehere和​​。

相關問題