【发布时间】:2010-06-16 22:13:51
【问题描述】:
它在 ASP Classic 中。 MS-Access 数据库。
我愿意:INSERT INTO Orders (userId) VALUES (123)"
我想从该行检索orderNumber。它是一个自动递增的数字。
所以我做到了:SELECT orderNumber FROM Orders WHERE userId=123
但由于在同一页面上,所以 SELECT 返回:BOF 或 EOF 为 True,或当前记录已被删除。请求的操作需要当前记录。
我在某处看到过RETURNING orderNumber as variable,但它是针对 oracle 的,我不知道如何在我的 asp 中实现它:(
set addOrder = Server.CreateObject("ADODB.Command")
addOrder.ActiveConnection = MM_KerenDB_STRING
addOrder.CommandText = "INSERT INTO Orders (userId) VALUES ("&userId&")"
addOrder.CommandType = 1
addOrder.CommandTimeout = 0
addOrder.Prepared = true
addOrder.Execute()
Dim getOrderNumber
Set getOrderNumber = Server.CreateObject("ADODB.Recordset")
getOrderNumber.ActiveConnection = MM_KerenDB_STRING
getOrderNumber.Source = "SELECT orderNumber FROM Orders WHERE userId=" & userId
getOrderNumber.CursorType = 0
getOrderNumber.CursorLocation = 2
getOrderNumber.LockType = 1
getOrderNumber.Open()
session("orderNumber") = getOrderNumber.Fields.Item("orderNumber").value
【问题讨论】:
-
我们能看到一些你用来实际运行 SQL 语句的 ASP 代码吗?
-
对不起,我假设(错误)这无关紧要
-
第一条语句是否真的将数据输入到您的表中?我想确保第一个语句没有问题。那么当您运行页面并收到错误时,您的访问数据库中有数据吗?
-
您确实应该使用参数化查询,而不是通过串联组装您的 SQL 语句。即,您的 SQL 语句应如下所示:
Insert Into Orders(userid) Values(@UserId)。你用的是什么数据库系统? -
@Thomas 我使用 MS-Access 和 ASP-Classic。我尝试将我的串联更改为@var,但失败了。我只是指出我的变量来自 ASP,而不是 SQL ..
标签: sql select asp-classic insert