列数与第1行的值计数不匹配 - mysql / JDBC

时间:2014-01-29 12:01:13

标签: java mysql jdbc

我正在使用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);
    }
}        

3 个答案:

答案 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命令将它们全部放入一个可以保存为离散值的字符串中。