簡體   English   中英

如何將自動增量主鍵插入數據庫表

[英]How to Insert auto increment primary key into database table

我正在插入使用JFileChooser選擇的CSV文件。導入時出現錯誤,它顯示主鍵為IS NULL 它是自動遞增的(我使用了SQL命令)。 奇怪的是,完全相同的插入代碼適用於同一數據庫中的不同表。 這是我到目前為止的代碼:

JAVA代碼

    int returnVal = fileChooser.showOpenDialog(this);
             if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fileChooser.getSelectedFile();
                try {
                Scanner sin = new Scanner(new FileReader(new File(file.getName())));
                while (sin.hasNext()) {

                    String[] line = sin.nextLine().split(",");
                    String name = line[0];
                    String surname = line[1];
                    int age = Integer.parseInt(line[2]);
                    String gender = line[3];
                    String shoeSize = line[4];

                    Studentstbl st = new Studentstbl();
                    st.setAge(age);
                    st.setDonationStatus("N");
                    st.setFirstName(name);
                    st.setGender(gender);
                    st.setShoeSize(shoeSize);
                    st.setSurname(surname);

                        yritpatPUEntityManager.getTransaction().begin();
                        yritpatPUEntityManager.persist(st);
                        yritpatPUEntityManager.getTransaction().commit();
                        studentstblList.clear();
                        studentstblList.addAll(studentstblQuery.getResultList());
                }
            } catch (IOException ex) {
                JOptionPane.showMessageDialog(jPanel1, "A problem occured when         accessing the file "+file.getAbsolutePath(), "Error", JOptionPane.ERROR_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(jPanel1, "Cancelled by user", "Error",         JOptionPane.ERROR_MESSAGE);
}

的SQL

    create table studentstbl (
    student_id int not null primary key
      GENERATED ALWAYS AS IDENTITY
      (START WITH 1, INCREMENT BY 1),
    school_id int not null,
    first_name varchar(60) not null,
    surname varchar(60) not null,
    age int not null,
    gender varchar(1) not null,
    shoe_size int not null,
    donation_status varchar(1) not null)

    ALTER TABLE STUDENTSTBL
    ADD CONSTRAINT SCHOOL_ID FOREIGN KEY (SCHOOL_ID)
    REFERENCES SCHOOLSTBL
    (SCHOOL_ID)

CSV

    aname,asname,2,M,1
    bname,bsname,3,F,1
    cname,csname,4,F,2
    dname,dsname,5,F,3
    ename,esname,7,M,3
    fname,fsname,6,M,3
    gname,gsname,8,F,4
    hname,hsname,10,M,4
    iname,isname,9,M,4
    jname,jsname,14,F,7
    kname,ksname,12,F,6
    lname,lsname,13,F,6
    mname,msname,3,F,1
    nname,nsname,2,M,1
    oname,osname,15,F,6
    pname,psname,15,M,6
    qname,qsname,12,M,4
    rname,rsname,8,M,3
    sname,ssname,7,M,3
    tname,tsname,6,F,3
    uname,usname,5,F,2
    vname,vsname,14,M,6
    wname,wsname,12,M,6
    xname,xsname,6,F,2
    yname,ysname,8,M,2
    zname,zsname,7,M,2

我今天設法在學校修好了! 我在Studentstbl中硬編碼了一個.get語句,該語句修復了我的其他錯誤之一並導致了該錯誤。 刪除實體,列表和查詢,然后再次導入它們,效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM