【发布时间】:2011-07-27 06:15:33
【问题描述】:
我试图避免在我的网络应用程序中使用直接的 SQL 查询。我环顾四周并得出结论,ADO Recordsets 将是完成这项工作的最佳工具,或者至少是最安全的工具。我需要将记录插入到数据库表中。不幸的是,我不知道如何获取刚刚插入的记录的标识值。这是我现在所拥有的减少:
<%
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 的回答。它帮助很大。
【问题讨论】:
-
感谢您的更新 - 这是有价值的信息
-
旧线程,但 rs("id") 是一个 Field 对象。你应该可以得到 rs("id").value
标签: asp-classic ado