2015-07-11 25 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