分配的值的数量与指定或隐含列的数量不同

时间:2016-04-01 06:51:24

标签: java jdbc javadb

我尝试使用JDBC在javadb中保存数据。 它给出了一个错误。

  

错误发生:指定的值的数量与指定或隐含列的数量不同。

这是我的JDBC代码:

try {
    //loading driver 

    Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

    //creating connection with the database 
    Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/sample", "app", "app");

    PreparedStatement ps = con.prepareStatement("insert into Student values(?,?,?,?,?)");

    ps.setString(1, Title);
    ps.setString(2, Artist);
    ps.setString(3, Country);
    ps.setString(4, Price);
    ps.setString(5, Year);
    int i = ps.executeUpdate();
    if (i > 0) {
        out.println("You are sucessfully register");
    }
} catch (Exception se) {
    out.println("Error Occured : \n" + se.getLocalizedMessage());
    se.printStackTrace();
}

1 个答案:

答案 0 :(得分:2)

您没有指定尝试插入的列。然后,SQL假定您可能希望添加为表 Student 定义的每个列。 我假设Student表中的列数多于insert语句中的值。这就是发生错误的地方。

定义明确插入值的列。

insert into Student (Col1,Col2,Col3,Col4,Col5) values (?,?,?,?,?)

如果所有其他列都是可选的或自动生成的,那么它将以这种方式工作。否则,您将收到另一个错误,告诉您哪个列丢失了。