我在java编程方面遇到了一个问题。我得到一个错误;列计数不为';t与第1行的值计数不匹配“;

我在java编程方面遇到了一个问题。我得到一个错误;列计数不为';t与第1行的值计数不匹配“;,java,mysql,Java,Mysql,这是密码。我无法通过netbeans将信息插入MySQL。源代码是无错误的。但是,单击按钮时,我会收到一个对话框,其中说 列计数与第1行的值计数不匹配 这是我第一次编写程序。我不是java专家,所以我的建议与SQL部分有关 您的错误与INTO子句中的列数与Value子句中的列数不匹配有关 必须使用逗号分隔内容中的值 Insert into hospital(PNO,Patient_Name,Age,Gender,Department,Doctor) values ('valuePNO

这是密码。我无法通过netbeans将信息插入MySQL。源代码是无错误的。但是,单击按钮时,我会收到一个对话框,其中说

列计数与第1行的值计数不匹配


这是我第一次编写程序。

我不是java专家,所以我的建议与SQL部分有关

您的错误与INTO子句中的列数与Value子句中的列数不匹配有关

必须使用逗号分隔内容中的值

Insert into hospital(PNO,Patient_Name,Age,Gender,Department,Doctor) 
    values  ('valuePNO','valuePatient_name','value_gender','value_dep', 'value_doc')
在INTO子句中有6列,然后在value子句中需要6个元素

使用+可以构建一个价值

您应该检查您的语言,以便为建议的值指定适当的值


您还应该看看在java中如何使用binding param来避免在sql代码中使用far(以这种方式避免sqlinjection的风险)

我不是java专家,所以我的建议与sql部分有关

您的错误与INTO子句中的列数与Value子句中的列数不匹配有关

必须使用逗号分隔内容中的值

Insert into hospital(PNO,Patient_Name,Age,Gender,Department,Doctor) 
    values  ('valuePNO','valuePatient_name','value_gender','value_dep', 'value_doc')
在INTO子句中有6列,然后在value子句中需要6个元素

使用+可以构建一个价值

您应该检查您的语言,以便为建议的值指定适当的值

您还应该看看在java中如何使用binding param来避免在sql代码中使用far(以这种方式避免sqlinjection的风险)

您不应该在每个变量之间指定带“+”的值。值(不是变量)需要用逗号分隔,并且必须正确分隔

一个更简单的解决方案是使用PreparedStatement简化SQL

String sql = "INSERT INTO hospital (PNA, Patient_Name, Age, Gender, Department, Doctor) VALUES (?, ?, ?, ?, ?, ?)";

PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString( 1, z );
stmt.setString( 2, w );
stmt.setInt( 3, m );
...
stmt.executeUpdate();
基本思想是每个“?”指定一个参数,然后该参数被您提供的值替换:

然后,PreparedStatement将确保在替换参数时在SQL中使用正确的分隔符

有关更多信息,请阅读上的JCBC教程部分

您不应该在每个变量之间指定带“+”的值。值(不是变量)需要用逗号分隔,并且必须正确分隔

一个更简单的解决方案是使用PreparedStatement简化SQL

String sql = "INSERT INTO hospital (PNA, Patient_Name, Age, Gender, Department, Doctor) VALUES (?, ?, ?, ?, ?, ?)";

PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString( 1, z );
stmt.setString( 2, w );
stmt.setInt( 3, m );
...
stmt.executeUpdate();
基本思想是每个“?”指定一个参数,然后该参数被您提供的值替换:

然后,PreparedStatement将确保在替换参数时在SQL中使用正确的分隔符


有关更多信息,请阅读JCBC教程中的章节。

我不是SQL专家,但我不相信您可以在SQL字符串中指定变量。在使用变量时,我总是使用PreparedStatement。@camickr correct。。我刚刚研究了sql格式。。不在内容上。。答案已更新。。使用字符串concat(我不是java专家)。。对于pass-the-values,虽然这比另一个答案好,因为您没有包含正确的分隔符,但它仍然不是执行此操作的首选方法。不要只使用字符串连接。使用分隔符等很容易出错。使用
preparedstation
@camickr。。答案更新了。。仅使用SQL部分和一些绑定参数的建议。。谢谢你的建议这是你的第三个猜测。除非您实际使用的是PreparedStatement,并且您指定了应该替换的值,否则指定“?”不会有任何作用。我不是SQL专家,但我不相信您可以只指定SQL字符串中的变量。在使用变量时,我总是使用PreparedStatement。@camickr correct。。我刚刚研究了sql格式。。不在内容上。。答案已更新。。使用字符串concat(我不是java专家)。。对于pass-the-values,虽然这比另一个答案好,因为您没有包含正确的分隔符,但它仍然不是执行此操作的首选方法。不要只使用字符串连接。使用分隔符等很容易出错。使用
preparedstation
@camickr。。答案更新了。。仅使用SQL部分和一些绑定参数的建议。。谢谢你的建议这是你的第三个猜测。除非实际使用PreparedStatement并指定应替换的值,否则指定“”不会起任何作用。