我试图避免在Web应用程序中使用直接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的回答。它极大地帮助了我。
最佳答案
This article解释了使用示例代码获取身份值的方法。
相关代码段为:
<%
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
%>
关于asp-classic - 如何从此ADODB.Recordset获取插入ID?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5506456/