我正在使用java netbeans& mysql和我使用“insert into select statement”。
但是当我运行程序并输入数据时,它总是说“列计数与第1行的值计数不匹配”
Connection conn = null;
ResultSet rs = null;
PreparedStatement pst = null;
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
String sql = "insert into tbl_addcharityroom1 values ('"+ jTextField10aw.getText() +"', (select charityWardID from tbl_addcharityward where diseaseCategory='"+ jComboBox1.getSelectedItem().toString() +"'))";
try {
pst = conn.prepareStatement(sql);
JOptionPane.showMessageDialog(null, "Saved");
pst.execute();
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
答案 0 :(得分:1)
您的表格中有3 column
,您需要输入2 columns
,请尝试以下操作:
INSERT INTO tbl_addcharityroom1 (charityRoomStatus, charityWardID)
VALUES ('"+ jTextField10aw.getText() +"', (select charityWardID from tbl_addcharityward where diseaseCategory='"+ jComboBox1.getSelectedItem().toString() +"'))";
答案 1 :(得分:0)
目标表中的列数与您选择的列数不匹配,即2。
这就是它所说的。所以结论是tbl_addcharityroom1没有2列。
答案 2 :(得分:0)
MySQL告诉您查询中的列数与表中的列数不匹配。这应该是一个相当容易的修复,但在你修复后,你仍然会在这段代码中有一个潜在的讨厌的错误。
该错误将取决于您如何定义tbl_addcharityroom1表。我会假设您有多个慈善病房,并且与类别表有多对一的关系。这意味着insert语句中的select可能有多个返回值。发生这种情况时,查询将失败。您将要修改此代码以处理该情况。您可以提前查看它们并为每个执行插入,也可以使用CONCAT MySql命令将它们全部放入一个可以保存为离散值的字符串中。