通过单击按钮将选定的jTable行插入数据库中

时间:2018-11-29 12:13:02

标签: java mysql

我试图通过单击按钮将jTable中的数据插入数据库。我收到一个异常,说列数与第1行的值数不匹配

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:
    try{
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/sms", "root", "");

        String query="insert into attendance(regNo,name,sClass,attendance,date) values('"+regNo+"','"+names+"','"+sClass+"','"+attendance+"')";
        Statement st=connection.createStatement();

        int row=jTable_Display_Student.getSelectedRow();
        String regNo=(jTable_Display_Student.getValueAt(row, 0).toString());
        String names=(jTable_Display_Student.getValueAt(row, 1).toString());
        String sClass=(jTable_Display_Student.getValueAt(row, 2).toString());
        String attendance=(jTable_Display_Student.getValueAt(row, 3).toString());



        st.executeUpdate(query);

       JOptionPane.showMessageDialog(null, "Selected Rows Submitted Successfully.");
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null,e.getMessage());
    }
}

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

在代码的这一部分:

    String query="insert into attendance(regNo,name,sClass,attendance,date) values('"+regNo+"','"+names+"','"+sClass+"','"+attendance+"')";

您有5列

 (regNo,name,sClass,attendance,date)

只有4个值可以填充

values('"+regNo+"','"+names+"','"+sClass+"','"+attendance+"')

所以您需要添加您丢失的date

答案 1 :(得分:0)

尝试使用SQL时,请使用PreparedStatement。该代码更易于阅读,并且不易出错。

一个入门的基本示例:

String sql = "INSERT INTO Page (Name, Title) VALUES (?, ?)";
PreparedStatement stmt = connection.prepareStatement(sql);

stmt.setString( 1, nameValue );
stmt.setString( 2, titleValue );
stmt.executeUpdate();

希望您可以轻松地告诉新消息

  1. 您要更新的列数,因此需要传递给SQL语句的值数
  2. 您不必担心这些值的所有分隔符。