中国石凳联盟 登录注册

VB连接远程ADO时必须注意的问题!

Satriani··9 回复·404 浏览

发表回复
1. 在工程界面引用Microsoft ActiveX Data Object 2.6
2. 系统安装IIS
3. 增加虚拟目录MSDAC,物理目录为Program FilesCommon FilesSystemmsadc
4. 此虚拟目录必须设置为可写权限
5. 修改此虚拟目录的目录安全性,匿名登陆帐号更改为 "主机名Guest"
6. 存放物理数据库的目录也需要虚拟化,只需可读即可
7. 用下面的代码让VB和ADO连接:

Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim command As New ADODB.command

Private Sub Form_Load()

Dim str As String

pstr = "Provider=MS Remote"
pstr = pstr "
pstr = pstr "
pstr = pstr "
pstr = pstr 数据库虚拟目录名数据库.mdb"

如果数据库有密码,千万不要默认地用ADO提示的那个密码连接选项,那个默认连接是提供给SQL数据库的,而不是Access,直接在“.mdb"后面增加一句“Database Password=XXX"就可以了。

其中,第5项问题如果按默认,就会报80070005错误,我为了解决这个问题,搜遍了整个网络,花了一整天时间也没法解决,万般无奈之下,气了(快哭了!),就开始胡乱修改IIS,没想到,乱试乱试竟然这样都给我试到!本人觉得这简直不可思议,这纯粹是一个运气问题,哈哈哈!!!
点赞0 收藏
如果是asp.net就方便多了,只要配置一下IIS之后,加入以下几句便搞定:
1、引用命名空间。
2、连接数据库。







sub Page_Load(obj as Object,e as EventArgs)
dim myConnecction as OleDbconnection=New OledbConnection_(Provider=Microsoft.Jet.OLEDB.4.0" "Data Source=X:.mdb文件具体地址")
end sub

对SQL而言就要改一改用:
"Provider=SQLOLEDB.1Initial Catalog=NorthwindData Source=MyServerUser ID=sa"

看来VB.net跟VB还是有相似之处的
这次问题的主要原因我想还是你以前基本很少会去处理数据库的东东。也是VB对数据库的处理并不是太理想。但决对也不差。哈哈哈~~~~~



Being a devil is the same as being a human. We should be kind. If we are kind, we are not a devil, we are a hybrid.
点赞0 收藏
事实上就是VB对ADO的支持不够好,微软也承认了,MSDN的Q278013 文档详细叙述了这个事情:


This article was previously published under Q278013:

BUG: ASP Error 80070005 "Server.CreateObject Access" When You Create a Visual Basic Component

CAUSE:
The authenticated user for the Visual Basic (VB) run-time file (Msvbvm60.dll) does not have sufficient permissions. The authenticated user is the IUSR_computername account when you use anonymous access or the user that is authenticated with the Web page.

STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

原因是MSVBVM60.DLL在默认帐号IUSR_computername 下无法启动一个能够让IIS识别的申请。

点赞0 收藏
我也是昨天才开始接触ADO的,以前都是用DAO做数据库编程,两者既有相通之处,不同的地方也很多,通过对ADO的初步认识,发现它的功能真的非常强大,特别是在多进程共同对数据库进行操作的时候,不用去理会数据库锁定问题,内部全自动搞定,我以前就在想,像石凳论坛这样的数据库,不停地有多个人在对一个数据库操作,怎么做到锁定和释放(更何况每个人网速还不一样,提交的申请的概率也没有一个准数),现在我总算明白了,从ASP时代开始微软已经全面进入ADO时代啦,实际上ADO就不需要显式地锁定数据库,一切变得非常直接和简单,看来我不是一般地落伍,呵呵呵呵!呵呵呵呵!!
点赞0 收藏
我接触的就更简单的,比起你所接触到的就更少了。但现在在搞ASP.net的过程中接触了一些,不过以不是ado了而是新一代的ado.net比起以前在asp时代用ado又方便了好多好多。我记得N久以前你就跟我说过ADO是个很深的东西。但那时我也就只用在简单的数据库联接方面。其它方面基本就不知道,还自以为是的认为其实ADO是个简单的东西。现在看来我真是SB。唉!~~~
总之一句话不能向你以前说的:“够用就行了”。这样绝对是会超级落伍的。哈哈哈,哈哈哈哈!哈哈哈哈!!

在补充一句上面的不是命名空间,打错了。因该是名称空间
Being a devil is the same as being a human. We should be kind. If we are kind, we are not a devil, we are a hybrid.
点赞0 收藏
慢慢来吧,事实上很多事情都是没办法的,电脑这个东西更新得太快了,不可能随时走在时代的最前沿,如果单机数据库,实际上DAO也足够了,但是远程他的功能就大大的不行了,这个时候需要用到ADO,这本身是一个学习的过程,而激发这个过程的机制是应用的本身而不是其他的东西。
点赞0 收藏
DAO是什么?是不是你笔误呀?还是我不知道这个东西?
Being a devil is the same as being a human. We should be kind. If we are kind, we are not a devil, we are a hybrid.
点赞0 收藏
ADO的前身,Data Access Object,VB5的时候很流行,VB6和VB5实际上的差别非常小,唯一就是VB6开始支持ADO了,而VB5还只支持DAO
点赞0 收藏
ADO算了解点,DAO也是个接口?
Being a devil is the same as being a human. We should be kind. If we are kind, we are not a devil, we are a hybrid.
点赞0 收藏
发表回复
发表回复