Как получить автоинкрементный первичный ключ в старой базе данных mdb? - PullRequest
1 голос
/ 02 марта 2012

Мне нужно получить первичный ключ Auto_Increment (id) после вставки новой строки в базу данных доступа mdb.Имея файл mdb в старой версии Access 97, я не могу использовать «SELECT @@ Identity;», потому что он не поддерживается.

Кроме того, в многопользовательской среде мне не нравится идея использовать Max(ID).

На самом деле единственное решение, которое у меня есть, это использовать DAO как:

Dim db As Database          'Test Database
Dim rs As Recordset         'Test Table
...
rs.AddNew
id = rs!id

, но я должен добавить ссылку на DAO COM DLL, в то время как я хотел быхотел бы иметь полный управляемый код .NET.

Есть ли у вас какие-либо предложения, как получить первичный ключ Auto_Increment (после вставки новой строки) без использования DAO или Max (ID)?

Вот мой код для добавления новой строки:

    Using oConn As New OleDbConnection(m_ConnString)
        oConn.Open()
        Using cmd As New OleDbCommand(sqlInsert, oConn)
            cmd.ExecuteNonQuery()
        End Using
    End Using

Спасибо.

1 Ответ

0 голосов
/ 30 марта 2012

Если в этой таблице есть какое-либо другое обязательное поле с уникальным индексом, вы можете запросить его значение после вставки, например, DFirst("ID", "tablename", "myfield = givenvalue").Если вы выполняете транзакцию, используйте набор записей (возможно, такой же, как для вставки) вместо DFirst.

...