一个简单的连接错误

Linux-Torvalds 2011-05-13 09:49:01
我尝试使用ADO连接Access数据库
<%
Set conn=Server.CreateObject("ADODB.Connection")
'method 1
conn.ConnectionString="Driver={Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath("/member/member.mdb")
'conn.Open "DSN=member"
conn.Open
Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM tblMemberInfo",conn
%>

提示错误是:Format of the initialization string does not conform to the OLE DB specification.
也就是这一句conn.ConnectionString="Driver={Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath("/member/member.mdb")不符合OLE DB规范。
但是使用conn.Open "DSN=member"的方式就可以了。请问错误的那一句哪里错了?
...全文
196 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Linux-Torvalds 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 citybird 的回复:]

1、
conn.ConnectionString="……" 是通过属性赋值的方式传递ConnectionString
conn.open ConnectionString是以函数参数的方式传递ConnectionString
所以两者无区别。

2、ConnectionString 属性并非如tcwsyt所述只有那5个,实际还有很多,诸如Max Pool Size、Min Pool ……
[/Quote]thx
三楼の郎 2011-05-13
  • 打赏
  • 举报
回复
1、
conn.ConnectionString="……" 是通过属性赋值的方式传递ConnectionString
conn.open ConnectionString是以函数参数的方式传递ConnectionString
所以两者无区别。

2、ConnectionString 属性并非如tcwsyt所述只有那5个,实际还有很多,诸如Max Pool Size、Min Pool Size之类的很多参数,只不过这些没指定的都是取的默认设置,不同的数据库ConnectionString也不同,小心别被人家忽悠了。
灬上海爽爷 2011-05-13
  • 打赏
  • 举报
回复
ConnectionString 并没有Data Source属性。。
我上面已经给出全部的属性了。。。
data source是conn.open()方法里的参数。


谢谢回复,很多时候分不清楚哪里可以用直接conn.open "连接字符串"的方法,哪里可以先用conn.connectionstring然后再用conn.open。

connection.Open connectionstring,userID,password,options

connectionstring是包含在conn.open的可选项里的
所以你可以在conn.open的时候包含他。也可以在open之前定义他。并无分别。
Linux-Torvalds 2011-05-13
  • 打赏
  • 举报
回复
不管了,结贴吧,这个问题显得很繁琐。
Linux-Torvalds 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 citybird 的回复:]

引用 3 楼 linwhwylb 的回复:
很多时候分不清楚哪里可以用直接conn.open "连接字符串"的方法,哪里可以先用conn.connectionstring然后再用conn.open。

这两种做法没区别,完全等效。
[/Quote]那我的那个问题就显得很怪异了。
Linux-Torvalds 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 citybird 的回复:]

DSN方式是肯定不行的,除非是服务器是自己的可以配置DSN不然别人恐怕不会让你配置这个

试试下面这两种方式
ConnectionString="Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath("database\xxx.mdb")

ConnectionString="Driver={Mi……
[/Quote]
Set conn=Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/member/member.mdb")

上面的这种方式可以。不知道为什么先把连接字符串搞到ConnectionString当中就不行了。
三楼の郎 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 linwhwylb 的回复:]
很多时候分不清楚哪里可以用直接conn.open "连接字符串"的方法,哪里可以先用conn.connectionstring然后再用conn.open。
[/Quote]
这两种做法没区别,完全等效。
三楼の郎 2011-05-13
  • 打赏
  • 举报
回复
DSN方式是肯定不行的,除非是服务器是自己的可以配置DSN不然别人恐怕不会让你配置这个

试试下面这两种方式
ConnectionString="Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath("database\xxx.mdb")

ConnectionString="Driver={Microsoft Access Driver (*.mdb)};DBQ= " & Server.MapPath("database\xxx.mdb")

能用哪个用哪个吧,正常情况两种应该都可以,不过有时候只能用一种,具体原因不明。
Linux-Torvalds 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tcwsyt 的回复:]

ConnectionString 属性有 5 个参数:
Provider 用于连接的提供者的名称。
File Name 提供者特有的文件(例如,持久保留的数据源对象)的名称,这些文件中包含预置的连接信息。
Remote Provider 当打开客户端连接时使用的提供者的名称。(仅限于远程数据服务。)
Remote Server 当打开客户端连接时使用的服务器的路径名称。(仅限于远……
[/Quote]
谢谢回复,很多时候分不清楚哪里可以用直接conn.open "连接字符串"的方法,哪里可以先用conn.connectionstring然后再用conn.open。
两种方式有点混淆。
灬上海爽爷 2011-05-13
  • 打赏
  • 举报
回复
ConnectionString 属性有 5 个参数:
Provider 用于连接的提供者的名称。
File Name 提供者特有的文件(例如,持久保留的数据源对象)的名称,这些文件中包含预置的连接信息。
Remote Provider 当打开客户端连接时使用的提供者的名称。(仅限于远程数据服务。)
Remote Server 当打开客户端连接时使用的服务器的路径名称。(仅限于远程数据服务。)
url 标识资源(比如文件或目录)的绝对 URL。


不知道你那DRIVER跟DBQ是哪来的。。。
<%
set conn=Server.CreateObject("ADODB.Connection")
conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0"
conn.open server.mappath("database.mdb")

conn.close
%>
Linux-Torvalds 2011-05-13
  • 打赏
  • 举报
回复
用这种方法也可以。但是就是上面那种有错误。
<%
Set rs=Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection="Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("/member/member.mdb")
rs.Open "SELECT * FROM tblMemberInfo",,1,1
%>

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧