1

私は JDBC と SQL に不慣れで、このプログラムを持っていますが、実行すると次のエラーが発生します。

java.sql.BatchUpdateException: Field 'stu_id' doesn't have a default value.

線を操作してみました

pst = con.prepareStatement("insert into student(first_name,last_name,address) values  (?,?,?)");

値に 4 番目の疑問符を追加し、stu_id を Student() への挿入に追加します。ただし、彼らは他のエラーしか与えていません。どうすればいいのかわからない?

package java11;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

public class PreparedExample {
public static void main(String[] args) {
    Connection con=null;
    PreparedStatement pst=null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/world","root","Sree7rama3**");
        pst = con.prepareStatement("insert into student(first_name,last_name,address) values (?,?,?)");

        for(int i=1;i<=20;i++){
            //pst.setInt(1, i);
            pst.setString(1, "Hello-"+i);
            pst.setString(2, "World-"+i);
            pst.setString(3,"HYD-"+i);
            pst.addBatch();
        }
        pst.executeBatch();

        System.out.println("Update is successful!");
    }catch (SQLException e) {
        System.out.println("There are some SQL errors!");
        e.printStackTrace();
    }catch (ClassNotFoundException e) {
        System.out.println("Driver class is not attached to this project!");
        e.printStackTrace();
    }finally{
        try {
            pst.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
}
4

1 に答える 1

0

ステートメントに stu_id を追加したとき、おそらくこの行を追加したようです

pst.setInt(1, i);

そして、あなたはこれらの行を持っていました

pst.setString(1, "Hello-"+i);
pst.setString(2, "World-"+i);
pst.setString(3,"HYD-"+i);

したがって、最初のパラメーター (両方とも 1) を上書きしていました。

試す

pst = con.prepareStatement("insert into student(stu_id,first_name,last_name,address) values (?,?,?,?)");



pst.setInt(1, i);
pst.setString(2, "Hello-"+i);
pst.setString(3, "World-"+i);
pst.setString(4,"HYD-"+i);
于 2013-07-18T19:20:34.067 に答える