当前位置: 首页 > 图文教程 > 网络编程 > ASP > 不用数据源打开数据库(DSNless connection)

ASP
ASP基础讲座(下)
解决IIS5 HTTP500内部错误
ASP 3.0高级编程(四十六)
ASP 3.0高级编程(四十五)
ASP 3.0高级编程(四十四)
ASP 3.0高级编程(四十三)
ASP 3.0高级编程(四十二)
ASP 3.0高级编程(四十一)
ASP 3.0高级编程(三十九)
ASP 3.0高级编程(三十八)
ASP 3.0高级编程(三十七)
ASP 3.0高级编程(三十六)
ASP 3.0高级编程(三十五)
ASP 3.0高级编程(三十四)
ASP 3.0高级编程(三十三)
ASP 3.0高级编程(三十二)
ASP 3.0高级编程(三十一)
ASP错误代码说明
jscript错误代码及相应解释大全
ASP错误处理

ASP 中的 不用数据源打开数据库(DSNless connection)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 48 ::
收藏到网摘: n/a

    每一个需要联结数据库的程序,首先必须在服务器上打开它。这里有许多的办法!

  使用系统数据源(DSN)
这个就必须在服务器上设置。这是数据访问最好最快的方法。因为它只需在服务器上认证一下就行了,不需要联结。

  使用文件数据源
这不是一个值得推荐的方法。因为这样的话,所有的用户都被限制了!根本不适用于网络。

  不需要DSN的联结
这种方法就不需要在服务器设置任何的东东,只要这个数据库存在就行!当然你也得有访问密码。
这是一个没有办法的办法,因为在服务器上没有DSN设置,而且速度也没有设置DSN快,因为每次都必须和服务器联结一次

  微软有关于这方面的文章在
http://support.microsoft.com/support/kb/articles/q193/3/32.asp
在这里所有的DSNless联结代码。我们在这里只说一小部分,如果觉得我们说的不清楚就到那儿去看英文版吧!
哈哈。

  DSNless联结需你知道数据库文件的名字(I.e. File based databases like Access, Paradox, FoxPro, etc.)或者数据库的服务器地址(SQL Server就是这样的)。还必须有打开这个数据库的权限,比如密码和用户名。有了这些你就可以打开这个数据库了!嘿嘿!

  不过你要注意,如果你是用的Access数据库你就必须知道它的绝对路径,就像"C:\thatserver\account17\nwind.mdb"一样。不过Sever.MapPath方法能够将相对路径转为绝对路径。我们就不用担心了!

  下面是一个例子例用了DSNless,用它来访问名叫nwind.mdb的Access的数据库。文件名为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数据库的方法。



<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是以下的内容:


<%
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 isnul