gpt4 book ai didi

Java 准备语句 getGeneratedKeys() 错误

转载 作者:行者123 更新时间:2023-11-29 03:18:15 26 4
gpt4 key购买 nike

我在 try-with-resources 语句中使用了 java 准备语句来访问表 在带有 NetBeans 8.0 IDE 的 Java DB 数据库中。运行 executeUpdate 方法后, 然后我运行生成的键方法来检索所有自动生成的值。 但是,生成的键结果集给出了一个空点错误。该表有 一个自动生成的主键。

代码片段如下所示。

         try (Connection  con = DriverManager.getConnection(host, uName, uPass)) {
con.setAutoCommit(false); //disable auto commit

try( PreparedStatement stmAlumnus = con.prepareStatement(insertSQL)) {

stmAlumnus.setInt(1, Integer.parseInt(id_TextField.getText().trim()));
stmAlumnus.setString(2, fName_TextField.getText().toUpperCase().trim());
stmAlumnus.setString(3, lName_TextField.getText().toUpperCase().trim());
stmAlumnus.setString(4, oName_TextField.getText().toUpperCase().trim());
stmAlumnus.setInt(5, year_ComboBox.getSelectedIndex());
stmAlumnus.setBoolean(6,employeedRadioButton.isSelected());
stmAlumnus.setString(7, jTitle_TextField.getText().toUpperCase().trim());
stmAlumnus.setString(8, email_TextField.getText().toUpperCase().trim());
stmAlumnus.setString(9, tel_TextField.getText().toUpperCase().trim());

stmAlumnus.executeUpdate();

ResultSet rst = stmAlumnus.getGeneratedKeys();
863
864 while(rst.next())
865 {System.out.println("this is the ID" + rst.getNString(1));}
866 } //close prepared statement


con.commit();
} //close connection
catch (SQLException ex)
{


if (con != null) {
try {
System.err.print("Transaction is being rolled back");
con.rollback();
} catch(SQLException excep) {
excep.printStackTrace();
}

Logger.getLogger(MyJFrame.class.getName()).log(Level.SEVERE, null, ex);
ex.getSuppressed();
}
}
}

下面是来自 NetBeans IDE 的错误消息

 run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at wa_poly.MyJFrame.insertIntoTables(MyJFrame.java:864)
at wa_poly.MyJFrame.saveButtonActionPerformed(MyJFrame.java:653)
at wa_poly.MyJFrame.access$700(MyJFrame.java:41)
at wa_poly.MyJFrame$8.actionPerformed(MyJFrame.java:524)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6527)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6292)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Suppressed: java.sql.SQLException: Cannot close a connection while a transaction is still active.
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.checkForTransactionInProgress(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.close(Unknown Source)
at wa_poly.MyJFrame.insertIntoTables(MyJFrame.java:886)
... 39 more
Caused by: java.sql.SQLException: Cannot close a connection while a transaction is still active.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
Source)
... 47 more

是否对产生的错误进行了解释。

最佳答案

准备语句时,必须使用标志。

例如

ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

关于Java 准备语句 getGeneratedKeys() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25228178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com