Access データベースで VB.NET を使用しています。値を挿入しますが、最後に挿入された ID (自動番号) を取得し、それを関連テーブルに挿入する必要があります。
@@IDENTITY と MAX(column) を試しましたが、@@IDENTITY はゼロを返し、MAX はあまり信頼できません (データの挿入が遅い場合があるため、挿入される前に ID を取得してください)。
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()
これは 2 つの関数で行われるため、上記のコードはわかりにくいかもしれませんが、これは 2 つの関数から取ったものです。2 つのステートメントが実行されますが、例として実行されるステートメントを 1 つだけ示しました。
@@IDENTITY と MAX に代わるものはありますか? @@IDENTITY でどのように問題が発生するのかわかりません。
アドバイスをありがとう:)。