2011-03-31 110 views
8

我試圖避免在我的web應用程序中使用直接的SQL查詢。我環顧四周,得出的結論是,ADO Recordset將是最好的或至少是最安全的工具。我需要將記錄插入到數據庫表中。不幸的是,我不知道如何獲得剛剛插入的記錄的身份值。這裏有一個下降的什麼,我現在得到:如何從此ADODB.Recordset獲取插入ID?

<% 
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回到身份列值?

UPDATE - 下面是關於上述代碼的解決方案。

我必須將光標類型更改爲adOpenKeyset而不是adOpenForwardOnly。在完成此操作後,記錄會在插入後自動更新爲「自動編號」字段的新值。但它是不是你認爲它是什麼。 rs("id")的值不會變成整數或變體。它成爲某種Automation類型,不能評估爲一個數字。出於某種原因,CInt()也不能直接用於該類型。所以你必須做的是將該值轉換爲字符串,然後將其轉換爲Int。以下是我如何管理的:

insertID = CInt(rs("id") & "") 

感謝Dee的回答。它非常有幫助。

+0

感謝更新 - 這是有價值的信息 – Dee 2011-04-04 17:51:58

+1

舊線,但RS(「ID」)是一個Field對象。你應該可以得到rs(「id」)。值 – alfadog67 2016-03-17 18:41:33

回答

3

本文解釋了使用示例代碼獲取身份值的方法。如果您以後需要更多的幫助,這讓我們知道

+0

謝謝,我已經看過/剔除了一個,但顯然我錯過了最後一部分的相關性。 – sholsinger 2011-04-01 13:34:37

+0

我遇到了在此之後返回的字段值的問題。看到我如何處理這個問題。 – sholsinger 2011-04-04 13:47:55

+4

此答案中的網址不再有效。 – lpacheco 2015-06-11 14:37:49