ASP里链接数据库出错的经验分享
本文分享的是一个作者的小经验之谈,关于ASP里链接数据库出错的经验分享,希望能帮助到大家。
首先申明,我不是什么高手,只是结合自己的那点微不足道的经验,以及一直有人在QQ上问我,很多相关数据库操作的问题,大多总接下来,其实和很多ASP程序员自己对数据库相关知识的领会多少有关系,刚好今天在CSDN上看到有人在讨论这样的问题,我觉得有必要理清楚很多自己或他人不清楚的内容。
对与数据库操作的理解,看看下面的内容,也许会更清楚一些!
1) 用SET建立连接对象 (这里是建立程序和数据库操作通道,
set cnobj = Server.CreateObject("ADODB.Connection")
2)给出数据库驱动的生产厂商和版本号以及你的ACCESS数据库所在的位置
strcon="provider=microsoft.jet.oledb.4.0;data source="&Server.MapPath("/wang/data/bbs.mdb")
记住:strcon是字符串变量你可以随便给,server.mappath是取数据库的磁盘路径,后面所跟的一定是站点路经。
本句也可以写成:
strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath("("/wang/data/bbs.mdb")")
3)用链接对象的OPEN方法打开数据库
cnobj.Open strcon
到此连接完成,后面就是建立记录集对象了,如:
set rstobj=server.createobject("adodb.recordset") '此句用SET语句建立记录集对象RSTOBJ
set rstobj=cnobj.execute("select * from users") '此句利用cnobj对象的execute方法执行SELECT查询语句,users是库中的表名称
带密码的连接:
Conn1.Open "Provider=Microsoft.JET.OLEDB.3.51;" & _
"Data Source=G:\ComponentSource\DBFiles\CSMain\CSMain.mdb;" &
"Jet OLEDB database Password=outlook"
问题现象比较多的一类就是:
以前一切正常的程序,现在运行的时候提示如下信息:
Microsoft VBScript 编译器错误 错误 '800a03f6' 缺少 'End'
/iisHelp/common/500-100.asp,行242
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'
[Microsoft][ODBC Microsoft Access Driver]常见错误 不能打开注册表关键字 'Temporary (volatile) Jet DSN for process 0x570 Thread 0x738 DBC 0x242e404 Jet'。
/bbs/index.asp,行7
为什么?我也说不清楚,但是我的经验就是这样,因为Windows2000 SP2以后的新bug造成的。也许微软不喜欢ODBC了,所以出此下策。正确的方法是使用OLEDB来连接Access。连接字符串为:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=数据库文件名
我不知道我这样理解对不对,OLEDB比ODBC更直接面向数据库,这样打个比方,如果你希望到电影院去看电影,从家里出门,有两路车可以到电影院,两路车为100路和10路,100路车需要在某站下车然后换10路在走一个站可以到电影院,10路当然可以直接到电影院,可能都成习惯了,搭公车喜欢做100路车,呵!虽然我也知道10路可以直达目的地。这里非常罗嗦,也有些不符合一般常人的逻辑(大款除外),问题是我要说的ODBC和OLEDB就相单于100路和10路。而电影院就是我们要操作的数据库。那我们为什么不使用OLEDB呢?不怕见笑。我现在想的就是这样。这个问题实在太普遍了!所以说得这么多!
<%
dim DB
DB="数据库名" '定义数据库路径及名称
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(DB)
%>
解接问题必须注意使用上面的连接方式! 还有很多,今天先说这些,如果我的理解有不正确的地方,希望高手牛人指正!