Używam VB.NET z bazą danych Access, wstawiam wartości, ale muszę pobrać ostatnio wstawiony identyfikator (numer auto) i wstawić go do powiązanej tabeli.vb.net sql ostatnio wstawiony ID
Próbowałem @@ IDENTITY i MAX (kolumna), ale @@ TOŻSAMOŚĆ zwraca zero, a MAX nie jest bardzo niezawodny (czasami wolno wstawić dane, więc idź identyfikator przed wstawionym).
Dim insertSql = datalayer.getDataTable((String.Format("INSERT INTO users (username) VALUES ({0})", username)))
Dim newID = datalayer.getDataTable((String.Format("SELECT @@IDENTITY FROM users")))
Dim con As OleDbConnection = getConnection()
con.Open()
Dim sqlCommand As OleDbCommand = New OleDbCommand(String.Format(insertSql), con)
sqlCommand.ExecuteNonQuery()
Odbywa się to w dwóch funkcjach, więc powyższy kod może wyglądać na zagmatwany, ale pochodzi z dwóch funkcji. Dwie instrukcje są wykonywane, ale właśnie pokazałem, że jeden jest wykonywany jako przykład.
Czy istnieje alternatywa dla @@ IDENTITY i MAX, ponieważ wydaje mi się, że nie widzę, jak źle postępuję z @@ IDENTITY?
Dzięki za radę :).
Zobacz moją ostatnią zmianę, o dostęp nie wsparcie wielu instrukcji w jednym poleceniu. Czy możesz potwierdzić, że faktycznie działa lub czy zastosowałeś inne podejście? –