ASP 数据连接错误

ASP DataConnectivity Error

我是一名学生,ASP 是我今年的科目。我正在尝试第一次进行数据库连接。当我将我的 ASP 文件与 MSAccess 连接时,它给了我这个错误。 代码:

<% 
Dim objConn, strConn, objRS
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = "PROVIDER=Microsoft.ACE.OLEDB.12.0;DATA SOURCE =" & _
 "C:\demo.accdb"
objConn.Open strConn
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open "Student", objConn, 2, 2
objRS.AddNew
objRS("idnum") = Request.Form("idnum")
objRS("firstname") = Request.Form("firstname")
objRS("lastname") = Request.Form("lastname")
objRS.Update
objRS.close
%>

**上面的代码给出了以下错误:* ADODB.Recordset 错误 '800a0cc1' 在与请求的名称或序号对应的集合中找不到项目。 /MyWeb/choice1.asp,第 12 行* ..我也试过这样做.. .. ..

Dim objConn, strConn, objRS
Set objConn = Server.CreateObject("ADODB.Connection")
strConn = "DSN=Stud"
objConn.Open strConn

它给了我同样的错误。 我的数据库名称是 demo.accdb 我的 Table 名字叫学生。 IIS 的应用程序池设置设置为 "true" 以使用 Windows 32 位。 我还安装了 OLEDB ACE 12。

请帮忙,因为我一团糟。我只想在 Access 数据库中插入一条记录。 帮助将不胜感激。

该错误与您的连接、设置、IIS 设置或任何深奥的内容无关,而是与您正在打开的记录集中存在(或者更确切地说,不存在)哪些列有关。

代码的第 12 行是什么? (在您发布的片段中,第 12 行是 "lastname" 字段,但我不知道您的实际代码是否如此。)检查 Student table 的设置: 您是否正确拼写了该列名称?如果 table 列是 LastN,那么您的代码应该有 objRS("LastN") = Request.Form("LastName")1,而不是 objRS("LastName")...。值得庆幸的是,VBScript 和 SQL 都不区分大小写,因此您无需大惊小怪,但您确实需要正确拼写。

请注意,如果您只向 return 编写您想要的列(和行)的显式 SELECT 语句,它可能会帮助您 "see" 您做得更好,而不是打开整个 table。此外,当您使用实际数据库(往往有数千甚至数百万条记录,而不是您的测试数据库中可能有的六条记录)时,打开整个 tables 是非常糟糕的主意。好吧,除非你喜欢超时错误。

objRS.Open "SELECT TOP 0 id, firstname, lastname FROM Student", objConn, 2, 2

(因为你所做的只是添加一行,你实际上不需要 return 任何记录;因此 TOP 0.2)

1 所有 "OMG! Your code is vulnerable to SQL injection!!1!" 类型的人都可以在这里插入你惯用的咆哮。

2 我已经有一段时间没有使用 Access 了;如果它在没有 ORDER BY 子句的 TOP 0 上阻塞,请尝试 SELECT ... WHERE 1 = 2.