使用“自动编号”字段插入Access表

时间:2015-01-15 02:16:15

标签: java database ms-access

我有一个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();不会工作并抛出异常?任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:2)

我刚刚针对一个名为&#34的自动编号字段的表测试了以下代码; Id"并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的更多信息,请参阅

Manipulating an Access database from Java without ODBC