Tôi đang sử dụng VB.NET với Cơ sở dữ liệu Access, tôi chèn các giá trị nhưng sau đó tôi cần lấy ID được chèn cuối cùng (số tự động) và chèn vào bảng có liên quan.vb.net sql ID được chèn lần cuối
Tôi đã thử @@ IDENTITY và MAX (cột) nhưng @@ IDENTITY trả về số không và MAX không đáng tin cậy (đôi khi chậm chèn dữ liệu, vì vậy hãy lấy ID trước khi chèn).
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()
Điều này được thực hiện bằng hai chức năng để mã trên có thể gây nhầm lẫn, nhưng chỉ lấy từ hai hàm. Hai câu lệnh được thực thi, nhưng tôi vừa chỉ ra một câu lệnh được thực hiện như một ví dụ.
Có và thay thế cho @@ IDENTITY và MAX, vì tôi có vẻ như không thấy có vấn đề gì với @@ IDENTITY?
Cảm ơn lời khuyên nào :).
Xem chỉnh sửa cuối cùng của tôi về truy cập không hỗ trợ nhiều câu lệnh trong một lệnh. Bạn có thể xác nhận rằng nó thực sự hoạt động hoặc bạn đã đi cho một cách tiếp cận khác? –