2012-10-03 93 views
0

我有一個使用DSN連接到2003 ODBC數據庫的舊ASP網站(很久以前由一位前員工編寫)。服務器已經由我們的主機更新到2008年,並且我們不能再使用ODBC,所以我必須建立DSN-Less連接。更改ASP .mdb訪問DSN Less Connection?

不幸的是,我對ASP和通過ASP的數據庫連接知之甚少。我想知道是否有人可以幫助我更改代碼以便在沒有ODBC的情況下連接到Access數據庫?

我覺得它連接使用此代碼:

<% 
' Get current name of region and intro text 
Dim objRec, sql, introtext 
sql="SELECT * FROM hometext WHERE home_id = 1" 
set objRec=Server.CreateObject("ADODB.Recordset") 
objRec.Open sql, "dsn=databasename" 
introtext = Replace(objRec("home_introtext"), vbCrLf, "<br />") 

' Get the 5 newest news items 
Dim objRec2, sql2, newstext 
sql2="SELECT TOP 5 news_date, news_text FROM news ORDER BY news_date DESC" 
set objRec2=Server.CreateObject("ADODB.Recordset") 
objRec2.Open sql2, "dsn=databasename" 

' Get all images to appear to page 
Dim objRec3, sql3 
sql3="SELECT * FROM homeimages ORDER BY homeimage_date DESC" 
set objRec3=Server.CreateObject("ADODB.Recordset") 
objRec3.Open sql3, "dsn=databasename" 

' Get the next 5 events from the current date 
Dim objRec4, sql4 
sql4="SELECT TOP 5 event_date, event_name FROM events WHERE event_date >= " &   niceDateAccess(Date()) & " ORDER BY event_date" 
set objRec4=Server.CreateObject("ADODB.Recordset") 
objRec4.Open sql4, "dsn=databasename" 
%> 

我不知道這一切是如何相連,我沒有太大的編劇的。

任何(愚蠢的)幫助將不勝感激!

感謝

編輯:數據庫坐在在服務器上的根文件夾的「私人」文件夾。

+0

[This answer](http://stackoverflow.com/a/12704479/447356)是正確的。從答案的前三行開始,只是改變數據庫文件的路徑,然後在整個代碼中將''dsn = databasename'''改爲'conob',例如:'objRec.Open sql,conob'和它將導致代碼使用無DSN連接。 –

回答

1

這裏是一個示例代碼。更改數據庫名稱和tablefield名

set conob = Server.CreateObject("ADODB.Connection") 
conob.Provider="Microsoft.Jet.OLEDB.4.0" 
conob.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.MapPath("YourDatabaseName.mdb") 
Set rsuni = Server.CreateObject("ADODB.Recordset") 
sqlStr="select * from Student_Entry" 

rsuni.open sqlStr,conob 

必須充分訪問你的數據庫由用戶您登錄。

+0

謝謝你,雖然我不確定代碼需要去哪裏以及它正在取代什麼。如果你能解釋一點,我會非常感激。我對這種編碼風格並不熟悉,所以如果你能解釋如何將它實現爲一個假的,那會很好! :) – user1607021

+0

@ user1607021,主要區別在於上面的代碼不使用顯式連接對象。 Polin的代碼在這裏確實使用了使用連接字符串打開的顯式ADO連接對象。這使得它不需要DSN。我經常在我編程的任何事情中避免DSN,甚至在MS Access中也可以使用本地客戶端應用程序。 DSNless連接提供了更大的靈活性,而且更少令人頭疼。 – HK1

+0

我已經嘗試了上面的代碼,但我不斷收到數字錯誤消息'對象需要:'objRec'。' 這是我的代碼:

組conob =的Server.CreateObject( 「ADODB.Connection」)
conob.Provider = 「Microsoft.Jet.OLEDB.4.0」
conob.Open「提供者= Microsoft.Jet .OLEDB.4.0; Data Source =「&server.MapPath(」private/tvr.mdb「)
Set rsuni = Server.CreateObject(」ADODB.Recordset「)
sqlStr =」SELECT * FROM hometext WHERE home_id = 1 「
objRec.Open SQL,conob – user1607021