这是密码。我无法通过netbeans将信息插入mysql。源代码是无错误的。然而,点击按钮,我收到一个对话框说
列计数与第1行的值计数不匹配
int z=Integer.parseInt(jTextField1.getText());
String w=jTextField2.getText();
int m=Integer.parseInt(jTextField3.getText());
String k=jTextField4.getText();
String y=jTextField5.getText();
String i=jTextField6.getText();
try
{
Class.forName("java.sql.Driver");
Connection c;
c = DriverManager.getConnection("jdbc:mysql://localhost:3306/dilshahiba","root","hope");
Statement o=c.createStatement();
String q;
q = "Insert into hospital(PNO,Patient_Name,Age,Gender,Department,Doctor) values(z+w+m+k+y+i)";
o.executeUpdate(q);
JOptionPane.showMessageDialog(null,"BOOKED");
o.close();
c.close();
}
catch(HeadlessException e) {
JOptionPane.showMessageDialog(null,e.getMessage());
}
catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null,e.getMessage());
}
catch (SQLException e) {
JOptionPane.showMessageDialog(null,e.getMessage());
}
这是我第一次做节目。
2条答案
按热度按时间olmpazwi1#
不应在每个变量之间用“+”指定值。值(不是变量)需要用逗号分隔,并且必须正确分隔。
一个更简单的解决方案是使用preparedstatement来简化sql。
基本思想是每个“?”指定一个参数,然后该参数被您提供的值替换:
然后preparedstatement将确保在替换参数时在sql中使用正确的分隔符。
阅读jcbc教程中关于使用准备好的语句的部分以获取更多信息。
gijlo24d2#
我不是javaMaven,所以我的建议与sql部分有关
您的错误与into子句中的列数与value子句中的列数不匹配有关
必须使用逗号分隔内容值
into子句中有6列,那么value子句中需要6个元素。。
使用+你建立了一个价值观
你应该检查你的语言,为建议的值分配适当的值
您还应该看看在java中如何使用binding param来避免在sql代码中使用far(以这种方式避免sqlinjection的风险)