2015-07-11 57 views
1

我是学生,ASP是我今年的主题。我正在尝试首次执行数据库连接。它给了我这个错误,当我连接我的ASP文件与MSAccess。 代码: ASP DataConnectivity错误

<% 
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 我的表名是Student。 对于使用Windows 32位的IIS,ApplicationPool设置设置为“true”。 我也安装了OLEDB ACE 12.

请帮忙,因为我完全陷入混乱..我只想在Access数据库中插入一条记录。 帮助,将不胜感激。

+1

什么是你的表“学生”的领域?请检查您是否正确拼写了像idnum这样的字段名称 – SearchAndResQ

回答

0

该错误无关,与你的连接,安装,IIS设置,或深奥的东西,什么都做什么存在的列(或者说,根本不存在),在你打开记录。

什么是你的代码的第12行? (在片段您已发布的第12行是“姓氏”字段,但是我不知道,对于你的实际代码是真的。)检查Student表设置:拼写是否正确的列名?如果表列是LastN,那么你的代码应该有objRS("LastN") = Request.Form("LastName") ,不objRS("LastName")...。值得庆幸的是,VBScript和SQL都不区分大小写,所以你不需要做肛门,但你需要正确拼写。

请注意,如果您编写明确的SELECT语句来仅返回所需的列(和行),而不是打开整个表,它可能会帮助您“看到”您做得更好。另外,当你在处理实际的数据库时(它往往有数千甚至数百万条记录,而不是你可能在测试数据库中的半打),打开整个表是一个非常糟糕的想法。那么,除非你超时错误。

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

(因为所有你正在做的是添加行,你实际上并不需要返回任何记录。因此TOP 0

所有你“OMG !您的代码容易受到SQL注入攻击!1!“类型可以在这里插入你的习惯咆哮。

自从我与Access合作已经有一段时间了;如果它窒息TOP 0而没有ORDER BY子句,请尝试SELECT ... WHERE 1 = 2

+0

非常感谢..它有效.. 1列名称被拼错了... – YusufSM

+0

@YusufSM:如果我的回答对您有帮助,请考虑将其标记为“已接受”。它会给我们两个一些声望点,但更重要的是,它会告诉系统这个问题得到了回答。 – Martha