ASP连接数据库的方法一般有两种,分别是使用OLE DB字符串建立和使用ODBC字符串建立。一般和ASP配套的数据库就是Access和SQLServer,小型网站尤其以Access数据库为多。很多客户在自己编程的过程中,对数据库连接代码一直搞不清楚如何来写,造成程序运行后提示各种各样的错误。本篇文章就帮助大家解决ASP连接数据库的各种问题。
一个典型的错误是“不能打开注册表关键字”,具体出错信息如下:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x530 Thread 0x13f8 DBC 0x2167024 Jet'。
正确的连接数据库代码应该怎么写呢?下面给出示例代码:
1、ASP连接SQLServer数据库
Set conn=Server.CreateObject("ADODB.Connection")
connstr="Provider=SQLOLEDB;Server=local;UID=sa;PWD=123;DataBase=mydb"
conn.Open connstr
其中Server是SQLServer数据库的地址,如果和空间在一台服务器就用local,不在一台服务器就用IP地址。UID是数据库用户名,PWD是数据库密码,DataBase是数据库名。
2、ASP连接Access数据库
Set conn=Server.CreateObject("ADODB.Connection")
'使用OLE DB字符串建立
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=指向mdb的物理路径"
'使用ODBC字符串建立
connstr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=指向mdb的物理路径"
conn.Open connstr
两种connstr字符串任选其一,指向mdb的物理路径要用Server.Mappath()函数。比如数据库文件的位置是/db/mydb.mdb,那么就可以写成Server.Mappath("/db/mydb.mdb")。总之,这个函数的功能是把相对路径转换成绝对路径。
数据库连接代码报错的原因有很多,客户可以从以下几个方面来分析。
1、数据库连接代码是否正确。如果是SQLServer数据库,仔细检查数据库主机、数据库用户名、数据库密码以及数据库名这四个关键参数是否正确。如果是Access数据库,则检查是否使用了数据库的绝对路径,必要的时候把connstr连接字符串用Response.Write输出看一下是否符合ASP语法。
2、Access数据库是否有读写权限。程序运行过程中,不可避免的要读写Access数据库。比如用户注册,添加新闻,删除消息,都是对数据库的读写,所以整个网站的权限一定要设置好。现在大部分空间商默认都是开通读写权限的,除非您不小心在空间管理面板中关闭了写入权限。
3、还有一种情况,比较难发现。上次有一个客户出现了这种情况,我们也是检查了很久才找到原因,原来是空间满了。在排查了各种可能的原因之后,仍然报数据库连接错误,则很有可能是空间已经满了。因为大部分虚拟主机都是采用磁盘配额,对空间的容量有严格限制。如果空间已经满了,不仅通过FTP无法上传任何文件,数据库连接的时候也同样会报错。