我的错误在哪里?

Wheres my Mistake?

我想获取实际创建的主键。 我立即需要它用于另一种方法,但它 returns 是一个错误。 但它 returns 一个 SQLE。我不知道我的错误在哪里。 我希望我给了你足够的信息。 (System.out.println(id) 只是让我检查它是否 returns 正确的主键)

创建表:

CREATE TABLE "MitarbeiterInfo" ("Vorname" TEXT, "Nachname" TEXT, "Geburtsdatum" CHAR, "Wohnadresse" TEXT, "Postleitzahl" TEXT, "Eintrittsdatum" CHAR, "Handynummer" TEXT, "Email" TEXT, "ID" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL )

桂类:

public void actionPerformed(ActionEvent e) {
            new Datenbank().mitarbeiterHinzufügen(
                    textField.getText(),textField_1.getText(),textField_2.getText(),textField_3.getText(),
                    textField_4.getText(),textField_5.getText(),textField_6.getText(),textField_7.getText());
            refreshTable();
        }

数据库类:

public void mitarbeiterHinzufügen(String v, String n, String g, String w, String p, String e, String h, String email){
    conn=Datenbank.dbConnector();


    try {
        String query="insert into MitarbeiterInfo (Vorname,Nachname,Geburtsdatum,Wohnadresse,Postleitzahl,Eintrittsdatum,Handynummer,Email,ID) values (?,?,?,?,?,?,?,?,?)";
        PreparedStatement pst=conn.prepareStatement(query);
        pst.setString(1, v);
        pst.setString(2, n);
        pst.setString(3, g);
        pst.setString(4, w);
        pst.setString(5, p);
        pst.setString(6, e);
        pst.setString(7, h);
        pst.setString(8, email);

        pst.execute();

        String identitiy = "SELECT IDENTITY_VAL_LOCAL() FROM MitarbeiterInfo";
        ResultSet rs = pst.executeQuery(identitiy);
        rs.next();
        int id = rs.getInt("1");
        System.out.println(id);


        JOptionPane.showMessageDialog(null, "Mitarbeiter hinzugefügt");

        pst.close();
    } catch (Exception b) {
        b.printStackTrace();
    }
}

发生错误:

java.sql.SQLException: not implemented by SQLite JDBC driver
at org.sqlite.Unused.unused(Unused.java:31)
at org.sqlite.PrepStmt.executeQuery(PrepStmt.java:596)
***at Datenbank.mitarbeiterHinzufügen(Datenbank.java:69)***
at GUI.actionPerformed(GUI.java:138)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access0(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.awt.EventQueue.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

在 java.sql.ResultSet 中,为 getInt 定义了以下方法:

getInt(int columnIndex)
getInt(String columnLabel)

我发现您的代码中的以下行有问题:

int id = rs.getInt("1");

您应该通过以下选项之一获得价值:

int id = rs.getInt(1);

或者

int id = rs.getInt("Column_name");

尝试

SELECT last_insert_rowid() FROM MitarbeiterInfo 代替。

您遇到的异常似乎暗示 IDENTITY_VAL_LOCAL() 不受 SQLite 支持。