java—插入带有自动编号字段的访问表

rbl8hiat  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(258)

我有一个java作业,需要更新ms access数据库。数据库有六列,其中一列是id列,这是一个自动编号。我已经为如下五个字段编写了更新语句:

resultSet.beforeFirst();
  if(resultSet.next()) {
    resultSet.moveToInsertRow();
    resultSet.updateString(1, FirstNameTextField.getText());
    resultSet.updateString(2, LastNameTextField.getText());
    resultSet.updateString(3, SignUpUsernameTextField.getText());
    resultSet.updateString(4, EmailTextField.getText());
    resultSet.updateString(5, SignUpPasswordField.getText());
  **Here should be the statement that updates the 6th field**;
    resultSet.insertRow();

即使它是一个自动编号字段,我也必须编写一些东西来更新它或resultset.insert();不会工作并抛出异常?感谢您的帮助。谢谢。

bnl4lu3b

bnl4lu3b1#

我刚刚用一个名为“id”的autonumber字段和ucanaccess正确插入新行的表测试了下面的代码

String connStr = "jdbc:ucanaccess://C:/Users/Public/mdbTest.mdb";
try (Connection conn = DriverManager.getConnection(connStr)) {
    try (Statement s = conn.createStatement(
            ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE)) {       
        ResultSet rs = s.executeQuery("SELECT Id, Field1, Field2 FROM ucatest");
        rs.moveToInsertRow();
        rs.updateInt("Id", 0);
        rs.updateString("Field1", "newvalue1");
        rs.updateString("Field2", "newvalue2");
        rs.insertRow();
    }
}

提供给的实际值 updateInt() 不重要;下一个可用的自动编号值是在 insertRow() 已执行。
有关使用ucanaccess的详细信息,请参阅
不使用odbc从java操作access数据库

相关问题