如何从JDBC向MySQL数据库添加记录

时间:2014-07-28 09:23:19

标签: mysql sql jdbc add records

我在尝试将记录添加到MySQL数据库时遇到问题。 我的数据库有5列(id,名称,玩家,点,位置),我已将id声明为“Auto-Increment”和“primary”。然后,当我尝试添加记录时,我收到错误 列数与第1行的值计数不匹配 。当我的代码有这个语句时,会发生这种情况,而不是向用户询问输入,因为id应该从数据库中自动增加自身。

String sql1 = "INSERT INTO teams VALUES (?,?,?,?)";

我被告知我不应该添加另一个?到VALUES()因为我不需要再次自动递增它。

这是我的代码:

try
  {    
   conn_pr1 = DriverManager.getConnection("jdbc:mysql://localhost/test1?user=me&password=12345");
   conn1 = DriverManager.getConnection("jdbc:mysql://localhost/test1?user=me&password=12345");
   stmt1 = conn1.createStatement();
   rs1 = stmt1.executeQuery("SELECT * FROM teams");
   String sql1 = "INSERT INTO teams VALUES (?,?,?,?)";
   ps1 =conn_pr1.prepareStatement(sql1);
   String str1 = JOptionPane.showInputDialog(null,"Team name : ");
   String str2 = JOptionPane.showInputDialog(null,"Players : ");
   String str3 = JOptionPane.showInputDialog(null,"Points : ");
   String str4 = JOptionPane.showInputDialog(null,"Position : ");
   int int2 = Integer.parseInt(str2);
   int int3 = Integer.parseInt(str3);
   int int4 = Integer.parseInt(str4);
   ps1.setString(1,str1);
   ps1.setLong(2,int2);
   ps1.setLong(3,int3);
   ps1.setLong(4,int4);
   ps1.executeUpdate();
   System.out.println("\n Successfully added " + str1 + " to database test1!");
                            System.out.println("\n After Changes : ");

                                              System.out.println("___________________________________________________________________________________");
  while (rs1.next())
      {
        System.out.println(" Id : " + rs1.getString(1) + " | Team : " + rs1.getString(2) + " | Players : " + rs1.getString(3) + " | Points : " + rs1.getString(4) + " | Position : " + rs1.getString(5));
      }
        conn1.close();
        conn_pr1.close();
        stmt1.close();
        ps1.close();
        rs1.close();
   } catch ( SQLException se)
        {
        se.printStackTrace();
        }
}
                });

2 个答案:

答案 0 :(得分:1)

INSERT INTO teams (names,players,points,position) VALUES (?,?,?,?)应该可以解决问题。

答案 1 :(得分:0)

您应该明确指定要插入的列,目前您拥有的参数占位符少于表中的列数。您需要明确表示您不希望插入ID列,以便由自动增量处理它。使用:

INSERT INTO myTable (column1, column2, ...) VALUES (?, ?, ...)