Asp-Classic
如何從此 ADODB.Recordset 中獲取插入 ID?
我試圖避免在我的網路應用程序中使用直接的 SQL 查詢。我環顧四周,得出的結論是,ADO
Recordset將是完成這項工作的最佳工具,或者至少是最安全的工具。我需要將記錄插入到數據庫表中。不幸的是,我不知道如何獲取剛剛插入的記錄的標識值。這是我現在所擁有的減少:<% dim insertID, rs set rs = Server.CreateObject("ADODB.Recordset") rs.Open "my_table_name", conn, adOpenForwardOnly, adLockOptimistic rs.AddNew() Call m_map_values_to_rs(rs) rs.Update() insertID = rs("id") rs.Close() rs = Nothing %>我擁有的程式碼已成功插入記錄,但我一生都無法弄清楚如何
Recordset在插入後獲取要更新的 id 欄位。如何從中獲取標識列值Recordset?更新- 這是關於上述程式碼的解決方案。
我不得不將游標類型更改為
adOpenKeyset而不是adOpenForwardOnly. 在我這樣做之後,插入後記錄會自動更新為“自動編號”欄位的新值。然而,它不是你想的那樣。的值rs("id")不會變成整數甚至是變體。它變成了某種Automation類型,不能作為一個數字來評估。由於某種原因,CInt() 也不能直接用於該類型。因此,您必須做的是將值轉換為字元串,然後將其轉換為Int. 以下是我的管理方法:insertID = CInt( rs("id") & "" )感謝 Dee 的回答。它幫助很大。
本文通過範常式式碼解釋了獲取標識值的方法。
相關的程式碼片段是:
<% fakeValue = 5 set conn = CreateObject("ADODB.Connection") conn.open "<conn string>" sql = "INSERT someTable(IntColumn) values(" & fakeValue & ")" & _ VBCrLf & " SELECT @@IDENTITY" set rs = conn.execute(sql) response.write "New ID was " & rs(0) rs.close: set rs = nothing conn.close: set conn = nothing %>