sto usando VB.NET con un database di Access, inserisco i valori ma poi ho bisogno di ottenere l'ultimo ID inserito (numero automatico) e inserirlo in una tabella correlata.vb.net sql ultimo ID inserito
Ho provato @@ IDENTITY e MAX (colonna) ma @@ IDENTITY restituisce zero e MAX non è molto affidabile (a volte è lento inserire dati, quindi ottenere l'ID prima di quello inserito).
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()
Questo viene fatto in due funzioni in modo che il codice di cui sopra potrebbe essere fonte di confusione, ma questo è solo preso dalle due funzioni. Le due istruzioni vengono eseguite, ma ne ho appena mostrato una eseguita come esempio.
Esiste un'alternativa a @@ IDENTITY e MAX, poiché non vedo come si possa sbagliare con @@ IDENTITY?
Grazie per qualsiasi consiglio :).
Vedere la mia ultima modifica, circa l'accesso non supportano più istruzioni in un unico comando. Puoi confermare che funziona davvero o sei andato per un altro approccio? –