每一個需要聯(lián)結(jié)數(shù)據(jù)庫的程序,首先必須在服務(wù)器上打開它。這里有許多的辦法! 使用系統(tǒng)數(shù)據(jù)源(DSN) 這個就必須在服務(wù)器上設(shè)置。這是數(shù)據(jù)訪問最好最快的方法。因為它只需在服務(wù)器上認(rèn)證一下就行了,不需要聯(lián)結(jié)。 使用文件數(shù)據(jù)源 這不是一個值得推薦的方法。因為這樣的話,所有的用戶都被限制了!根本不適用于網(wǎng)絡(luò)。 不需要DSN的聯(lián)結(jié) 這種方法就不需要在服務(wù)器設(shè)置任何的東東,只要這個數(shù)據(jù)庫存在就行!當(dāng)然你也得有訪問密碼。 這是一個沒有辦法的辦法,因為在服務(wù)器上沒有DSN設(shè)置,而且速度也沒有設(shè)置DSN快,因為每次都必須和服務(wù)器聯(lián)結(jié)一次 微軟有關(guān)于這方面的文章在 http://support.microsoft.com/support/kb/articles/q193/3/32.asp 在這里所有的DSNless聯(lián)結(jié)代碼。我們在這里只說一小部分,如果覺得我們說的不清楚就到那兒去看英文版吧! 哈哈。 DSNless聯(lián)結(jié)需你知道數(shù)據(jù)庫文件的名字(I.e. File based databases like Access, Paradox, FoxPro, etc.)或者數(shù)據(jù)庫的服務(wù)器地址(SQL Server就是這樣的)。還必須有打開這個數(shù)據(jù)庫的權(quán)限,比如密碼和用戶名。有了這些你就可以打開這個數(shù)據(jù)庫了!嘿嘿! 不過你要注意,如果你是用的Access數(shù)據(jù)庫你就必須知道它的絕對路徑,就像"C:\thatserver\account17\nwind.mdb"一樣。不過Sever.MapPath方法能夠?qū)⑾鄬β窂睫D(zhuǎn)為絕對路徑。我們就不用擔(dān)心了! 下面是一個例子例用了DSNless,用它來訪問名叫nwind.mdb的Access的數(shù)據(jù)庫。文件名為nwind.asp <HTML><HEAD> <TITLE>nwind.asp</TITLE> <body bgcolor="#FFFFFF"></HEAD> <% accessdb="nwind.mdb" myDSN="DRIVER={Microsoft Access Driver (*.mdb)};" myDSN=myDSN & "DBQ=" & server.mappath(accessdb) mySQL="select * from customers" call query2table(mySQL,myDSN) %> <!--#include virtual="/learn/test/lib_dbtable.asp"--> </BODY> </HTML> 下面的例子是使用DSN來訪問SQL Server,文件名為sqldsn.asp <HTML><HEAD> <TITLE>sqldsn.asp</TITLE> <body bgcolor="#FFFFFF"></HEAD> <% accessdb="nwind.mdb" myDSN="DSN=student;uid=student;pwd=magic" mySQL="select * from publishers where state='NY'" call query2table(mySQL,myDSN) %> <!--#include virtual="/learn/test/lib_dbtable.asp"--> </BODY> </HTML> 下面的例子是用DSNless來訪問SQL Server數(shù)據(jù)庫的方法。 <HTML><HEAD> <TITLE>sqlDSNless.asp</TITLE> <body bgcolor="#FFFFFF"></HEAD> <% mydb="PROVIDER=MSDASQL;DRIVER={SQL Server};" mydb=mydb & "SERVER=sql2.datareturn.com;DATABASE=;" mydb=mydb & "UID=student;PWD=magic;" mySQL="select * from publishers where state='NY'" call query2table(mySQL,mydb) %> <!--#include virtual="/learn/test/lib_dbtable.asp"--> </BODY> </HTML> 包含文件lib_dbtable.asp是以下的內(nèi)容: <% sub query2table(inputquery, inputDSN) dim conntemp, rstemp set conntemp=server.createobject("adodb.connection") conntemp.open inputDSN set rstemp=conntemp.execute(inputquery) howmanyfields=rstemp.fields.count -1%> <table border=1><tr> <% 'Put Headings On The Table of Field Names for I=0 to howmanyfields %> <td><b><%=rstemp(I).name%></B></TD> <% next %> </tr> <% ' Now lets grab all the records do while not rstemp.eof %> <tr> <% for I = 0 to howmanyfields thisvalue=rstemp(I) If isnull(thisvalue) then thisvalue=" " end if%> <td valign=top><%=thisvalue%></td> <% next %> </tr> <%rstemp.movenext loop%> </table> <% rstemp.close set rstemp=nothing conntemp.close set conntemp=nothing end sub%> 大家看明白了嗎?嘿嘿,不清楚,那就在到論壇中問問各位大蝦吧! 文章來自http://www.aspcn.com ASP中華網(wǎng)如要轉(zhuǎn)載請注明出處,謝謝
|