| 轻轻松松搞定数据库链接 |
| 作者:未知 来源:未知 加入时间:2005-5-15 www.cnitrc.com |
|
你能不能熟练地在UD中创建“DSN”数据链接呢,答案如果是肯定的,OK!请继续往下看,一般情况下,设置DSN在本地调试程序时是非常容易的一项操作。然而,一旦将ASP文件上传到远程服务器时,你的页面绝大多数会“罢工”!:)
目前市场上的主机服务商非常多,不同的Web主机服务商会提供不同的数据库链接途径,主要有以下5种:
服务商直接为你提供设置好的DSN。
服务商提供"Control Panel",你可以自己设置DSN 。
一些服务商要求你使用DSN less ,或者效率更高、链接速度更快的OLEDB方法。
有些服务商要求你在连接字符串使用Server.MapPath命令。
有些服务商则会告诉你使用制定的文件夹存放数据库文件(有读/写权限)。
在上传文件之前,必须确认你的空间服务商提供的是哪种数据库链接方式,否则你就会付出无谓的尝试。
如果缺乏经验的话、处理数据库的链接是非常痛苦的一件事情!但是不要惊慌,UltraDev有一套自己的方法来"定制连接字符串"。
在下面这些讲座中你会掌握以下技能:
为Access数据库创建“DSN-less”连接字符串
为Access数据库创建“ OLEDB ”连接字符串
为其他数据库定制连接字符串
在开始“定制连接字符串”的教程之前,先要建立一个站点,教程中所用到的页面很简单,包含"增加记录"/"查看记录"页面,数据库存储了一些音乐文件数据。
1/在 Access 创建如下图所示结构的表
建立“文本”或“备注”型字段时,请设置其“是否允许空字符”属性为“是”。否则、如果文本框中没有输入任何数据就提交数据时,程序将出错!
2/表名称:"music" ;数据库文件:"music1.mdb"
1/ 在桌面新建一个文件夹c1 。
2/ 复制刚才创建的数据库文件music1.mdb 到c1文件夹中. 复制C1文件夹到wwwroot 目录当中.
3/ 在 UltraDev 中定义站点,设置本地文件夹,远程文件夹……。然后在C1文件夹中新建两个文件c1_add.asp 和c1_view.asp 。
4/ 打开c1_add.asp 并插入一个简单的用来添加数据的表单:
ARTIST 文本框: gk_artist
ALBUM 文本框: gk_album
SOURCE 文本框:gk_source
表单:c1form. 不必担心设置Action 和Method 。
5/ 打开c1_view.asp 建立一个简单显示数据的页面如下图所示.
6/ 保存文件.
DNSLESS CUSTOM CONNECTION STRING
1/ 打开c1_add.asp .
2/ Modify > Connections. 点击按钮〖New 〗选择Custom Connection String (fig 1).
fig 1
3/ 弹出“Custom Connection String”设置窗口 (fig 2).
fig 2
4/ 确认单选按钮定位到“Using Driver On Application Server” (fig 3).
在Connection Name文本框中输入:c1_music.
在Connection String文本框中输入:
Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\inetpub\wwwroot\c1\music1.mdb;
fig 3
让我们看一看刚才输入的代码的含义:
Driver={Microsoft Access Driver (*.mdb)}; 定义数据库驱动程序.
DBQ= 引用数据库物理路径位置
c:\inetpub\wwwroot\c1\music1.mdb;这就是你本地服务器中数据库文件所在的物理路径。
5/ 点击 OK 按钮 ,UD将在Connections创建一个ASP文件c1_music.asp.
此时我们已经为数据库建立了一个DSNLess 链接并存储于 wwwroot 目录中. 但是,问题来了:如果我上传文件到远程服务器上,怎么样修改数据库文件的路径 (c:\inetpub\wwwroot\c1\music1.mdb;) 呢?
6/ 如果你打开c1_music.asp 你能够看到以下的代码:
<%
' FileName="Connection_ado_conn_string.htm"
' Type="ADO"
' HTTP="true"
' Catalog=""
' Schema=""
MM_c1_music_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\inetpub\wwwroot\c1\music1.mdb;"
%>
开始几行是注释,唯一有用的是红色代码部分:
MM_c1_music_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\inetpub\wwwroot\c1\music1.mdb;"
假设你的网站是webgenius.co.uk ,你的主机服务商告诉你使用的数据库文件路径是:d:\webdocs\webgenius.co.uk\yourdatabase.mdb
此时,需要修改链接字符串示例如下:
MM_c1_music_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\webdocs\webgenius.co.uk\yourdatabase.mdb;"
当然需要修改yourdatabase.mdb为你刚才创建的文件music1.mdb 替换完成后如下:
MM_c1_music_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\webdocs\webgenius.co.uk\music1.mdb;"
**** 下面的内容非常重要!!!****
确保你输入的连接字符串全部都在一行上!不能敲入回车符或软回车符!
MM_c1_music_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=d:\webdocs\webgenius.co.uk\music1.mdb;"
如果你拷贝&粘贴定制的连接字符串,请一定要再次确认拷贝副本是否也在一行上。
在设置DSNLess连接时遇到的错误时存在两个主要的原因:“不正确的拼写”、“不正确的数据库路径”。
OLEDB CUSTOM CONNECTION STRING
ASP利用ADO与数据库连接时,同ODBC或Data Source Name(DSN)链接方式相比,使用OLEDB链接数据库更加快速可靠。OLEDB不需要通过第三方数据处理系统(data handling systems)直接链接到数据库.
1/打开 c1_add.asp 。
2/ Modify > Connections. 点击按钮〖New 〗选择Custom Connection String (fig 1).
fig 1
3/ 弹出“Custom Connection String”设置窗口 (fig 2).
fig 2
4/ 确认单选按钮定位到“Using Driver On Application Server” (fig 3).
在Connection Name文本框中输入:c1_music.
在Connection String文本框中输入:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\inetpub\wwwroot\c1\music1.mdb;
fig 3
链接字符串分为两部分:
Provider=Microsoft.Jet.OLEDB.4.0; 告诉我们使用Microsoft Jet OLEDB.4.0 OLEDB provider.
Data Source=c:\inetpub\wwwroot\c1\music1.mdb; 引用数据库文件的位置.
5/ 同上一页我们介绍的一样,在上传文件到远程服务器之前,需要修改数据库文件的路径:
<%
' FileName="Connection_ado_conn_string.htm"
' Type="ADO"
' HTTP="true"
' Catalog=""
' Schema=""
MM_c1_music_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\inetpub\wwwroot\c1\music1.mdb;"
%>
假设你的网站是webgenius.co.uk ,你的主机服务商告诉你使用的数据库文件路径是:d:\webdocs\webgenius.co.uk\yourdatabase.mdb
此时,需要修改链接字符串示例如下:
<%
' FileName="Connection_ado_conn_string.htm"
' Type="ADO"
' HTTP="true"
' Catalog=""
' Schema=""
MM_c1_music_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\webdocs\webgenius.co.uk\yourdatabase.mdb;"
%>
需要注意的仍然是链接代码要在同一行中,不能有断行。
USING - Server.MapPath - & OTHER TRICKS
IN THEORY
上页的教程中我们已经通过d:\webdocs\webgenius.co.uk\yourdatabase.mdb建立一个DSNLess connection链接到数据库文件。现在设想发生了一件非常意外的事情:主机服务商需要做一些特殊的维护工作,并将的站点文件暂时移到另外一个硬盘如E盘中,这时原先设置的数据库文件路径d:\webdocs\webgenius.co.uk\yourdatabase.mdb就不能正常工作,因为此时数据库的正确位置应该是:e:\webdocs\webgenius.co.uk\yourdatabase.mdb!
通过Server.MapPath命令可以检测数据库文件的位置,不会因为站点文件夹的位置改变而变化。
●使用这个方法之前需要注意的几个问题:
在custom connection string设置面板中,如果使用Server.MapPath,必须注意单选框要选择Using Driver on Application Server 。
链接字符串不能有断行。
注意引号问题.
下面列举一些使用Server.MapPath 的例子:
DSNLess Connection Strings :
标准的链接字符串:
"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\inetpub\wwwroot\your_site\data\music1.mdb"
使用Server.MapPath后如下:
"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/your_site/data/music1.mdb") & ";"
OLEDB Connection Strings :
标准的链接字符串:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\inetpub\wwwroot\your_site\data\music1.mdb"
使用Server.MapPath后如下:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/your_site/data/music1.mdb")
IN PRACTICE
1/ 打开 c1_add.asp.
2/ Modify > Connections. 点击按钮〖New 〗选择Custom Connection String (fig 1).
fig1
3/ 弹出“Custom Connection String”设置窗口 (fig 2).
fig 2
4/ 确认单选按钮定位到“Using Driver On Application Server” (fig 3).
在Connection Name文本框中输入:con1.asp
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/c1/music1.mdb")
fig 3
5/如果你点击Test 按钮,会弹出提示信息:“connection was made successfully”. 点击OK 按钮
6/打开 connection目录下的con1.asp 代码如下:
<%
' FileName="Connection_ado_conn_string.htm"
' Type="ADO"
' HTTP="true"
' Catalog=""
' Schema=""
MM_con1_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/c1/music1.mdb")
%>
技巧 # 1
小工具The WebThang PathFinder
我们提供了一个非常小的文ASP文件:pathfinder.asp,可以快捷地提供数据库链接代码下载 HERE .
使用方法:
解压文件
上传pathfinder.asp 到你的服务器端(和数据库文件在同一目录中)
通过浏览器运行:www.yoursite.com/data/pathfinder.asp.
你会看到类似下面的显示结果:
DSNLess Connection String is
DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Inetpub\wwwroot\test2\YourDatabase.mdb
OLEDB Connection String is
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\test2\YourDatabase.mdb
5.你所要做的仅仅是修改YourDatabase.mdb为你的数据库文件名,复制到custom connection string 设置窗口中(注意不要忘记在代码前后添加双引号).
技巧 # 2
假如你想创建一个Server.MapPath连接字符串,而数据库文件和你的远端站点ASP文件不在同一个目录下,你可能不能准确写出asp页和数据库文件之间精确路径,怎么办呢?尝试下面的方法
新建一个文件findpath.htm 同你的ASP 文件放到一起 (不要放到 Connections 目录下, 必须和asp文件在同一目录下)
打开findpath.htm输入“Path to Database” .
选择“Path to Database”建立一个超链接,连接到数据库文件.
在属性设置面板中Link文本框中你会看到类似../../mydatabase.mdb 的字符
拷贝字符,粘帖到Server.MapPath中。
STRINGS FOR ALL OCCASIONS
这里是用于连接各种数据库用的链接字符串,请根据你的需要选用。.
ODBC DSNLess Connections:
MS Access ODBC DSNless connection
Driver={Microsoft Access Driver (*.mdb)};Dbq=c:\yourpath\dbase.mdb;Uid=Admin;Pwd=pass;
dBase ODBC DSNless connection
Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\yourpath\dbase.dbf;
Oracle ODBC DSNless connection
Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=admin;Pwd=pass;
MS SQL Server DSNless connection
Driver={SQL Server};Server=servername;Database=dbase_name;Uid=sa;Pwd=pass;
MS Text Driver DSNless connection
Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\yourpath\;Extensions=asc,csv,tab,txt;Persist Security Info=False;
Visual Foxpro DSNless connection
Driver={Microsoft Visual FoxPro Driver};SourceType=DBC;SourceDB=c:\yourepath\dbase.dbc;Exclusive=No;
MySQL DSNless connection
driver={mysql}; database=yourdatabase;server=yourserver;uid=username;pwd=password;option=16386;
--------------------------------------------------------------------------------
OLE DB Connections:
MS Access OLE DB connection
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\yourpath\dbase.mdb;User Id=admin;Password=pass;
Oracle OLE DB connection
Provider=OraOLEDB.Oracle;Data Source=dbase_name;User Id=admin;Password=pass;
MS SQL Server OLE DB connection
Provider=SQLOLEDB;Data Source=machineName;Initial Catalog=dbasename;User ID=sa;Password=pass;
MS SQL Server OLE DB connection using an IP address
Provider=SQLOLEDB; Data Source=xx.xx.xx.xx,1433; Network Library=DBMSSOCN; Initial Catalog=dbasename;User ID=sa;Password=pass;
MS Text Driver OLE DB connection
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\yourpath;Extended Properties='text;FMT=Delimited'"
 |
|
|