列计数不为';t将java中第1行的值计数与mysql数据库匹配

列计数不为';t将java中第1行的值计数与mysql数据库匹配,java,mysql,sql,sql-server,Java,Mysql,Sql,Sql Server,我在奖励表中插入值时遇到问题。尝试解决它,并找到其他职位,以及,但我找不到任何解决办法 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_descript

我在奖励表中插入值时遇到问题。尝试解决它,并找到其他职位,以及,但我找不到任何解决办法

    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);

您在SQL语句中提到了11列,但为其设置了12个值。这导致了

列计数与mysql java中第1行的值计数不匹配 数据库


更新查询以使用正确的列数,然后使用相同数量和类型的值。

您有11列和12个值

你还有一个

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

其他人在您的值中提到的重复列是
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();


以下是此方法的更多资源:,和。

这就是我们不汇编查询的方式。这种汇编查询不是最佳做法??是的,您应该使用准备好的语句,而不是串联字符串。这样做更安全、友好,而且总体上更好。