如何编写ADO连接字符串打开设置了安全机制的Access数据库
如题 问题点数:100、回复次数:20Top
1 楼saucer(思归)回复于 2002-11-14 06:18:58 得分 0
try something like
oConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _
"Dbq=ThePathToYourDatabaseFile;" & _
"Uid=admin;" & _
"Pwd=YourPasswordHere;"
Top
2 楼Boible()回复于 2002-11-14 10:27:44 得分 0
你好!
你说的那种方式是对数据库加了密码的连接方式。
我现在想连的数据是在Office2000中设置了安全制并加密的数据库。它虽然也有密码,但性质不同吧。总之,那种连接方式是不行的。Top
3 楼dreammaker(世界因我而存在)回复于 2002-11-15 15:21:47 得分 0
saucer(思归) 后面好多星星呀!羡慕中:)Top
4 楼zither(渔歌子)回复于 2002-11-15 17:28:13 得分 0
同感 :)Top
5 楼cg_i(半点闲)回复于 2002-11-16 18:13:05 得分 0
我是初手~~~我来说两句。
不同的用户有着不同级别的访问方式,我想应该就是如同 saucer(思归) 前辈的语法一样,只是它用的是ADMIN(管理员)级别的用户访问罢了。
同样也可以换成你想要进行访问的用户名与密码,,当然它的访问权限会根据库中设定的而有些相应的限制。
说错勿怪~~~Top
6 楼LLeezhiling(乖乖)回复于 2002-11-16 18:51:19 得分 0
http://www.able-consulting.com/ado_conn.htm
你会有答案的
Top
7 楼ldg_2(绿豆糕)回复于 2002-11-17 09:30:57 得分 0
如果是不知道密码怎么办?Top
8 楼Ashray(灰射线)回复于 2002-11-17 12:49:22 得分 0
这个问题我也碰到过,最终也没解决。
我只能通过ODBC来访问加密的数据库,不方便。
Top
9 楼Boible()回复于 2002-11-17 22:53:29 得分 0
利用ADO方式的连接本人已经通过了,但是我还想使用OpenDatabase方式进行连接,又不知如何是好了,请各位不吝赐教!
Set database = workspace.OpenDatabase (dbname, options, read-only, connect)
Top
10 楼springlover(水止如心)回复于 2002-11-18 08:25:28 得分 100
这是个典型的问题,我从前遇到过很多次,但都被我解决了。问题的所在在于你的ACCESS设定了用户和口令,也就是说,你指定了一个MDW文件来管理你自己的数据库。所以,你在做DAO或ADO连接的时候一定要指明MDW文件的位置,当然也必须指定你的ACCESS中的USER ID 与PWD。可以看这样一条语句:
Me.Adodata.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;User ID=" & cstDefaultUser & ";password =" & cstDefaultPassWord & ";Data Source=" & Trim(Cd.filename) & ";Jet OLEDB:System database=c:\data\system.mdw;Jet OLEDB:Database Password=" & InputBox("请输入数据库的密码,没有直接单击确定!", cstmsg, "")
Jet OLEDB:System database=c:\data\system.mdw就是你需要的东西。
呵呵~~~~~~~~~~~我需要的呢,快给分。哈哈
Top
11 楼Boible()回复于 2002-11-19 11:38:22 得分 0
楼上的,你好!
你说的那种方法我知道了,现在的问题是想要使用OpenDatabase方法连接数据库,也就是说如果写也下面的句法。
Set database = workspace.OpenDatabase (dbname, options, read-only, connect)
如果你帮我搞掂,这里的分数全部给你,如何?
另外,设置了安全机制的ACCESS数据库别人是不是打不开的,或着说这是目前最安全的保护ACCESS数据库的方法呢?Top
12 楼springlover(水止如心)回复于 2002-11-20 08:27:40 得分 0
哈哈,说好了,把分都给我啊。(对不起,抢分了,大家。。。)
我上面所说的方法是用ADO来打开带有MDW文件的ACCESS。而你的方法是用DAO来打开,这两者的方法的区别很小,只是代码上的区别。下面我就给你DAO的答案。
在你开始想处理数据库的代码只前加上这几句就一切OK了!
--------------------------------
DAO.DBEngine.SystemDB = "c:\yourpath\yourfilename.mdw" 指定MDW位置
DAO.DBEngine.DefaultUser = "springlover" 指定用户名
DAO.DBEngine.DefaultPassword = "XXXX" 指定密码
--------------------------------
做好了这些就OK了,你可以象写没有安全机制的数据库一样来写代码了。
对于你说的第2个问题,至少我认为是这个样子。建立连接MDW安全机制让数据库自己来管理用户安全问题最好。如果这样你还是不放心的话,那么就给你的数据库再加上密码了,只是写代码的时候麻烦一些,总要给密码。
呵呵,就这样,给分吧,我要升级了,等不及了。哈哈~~
祝 好运。Top
13 楼Boible()回复于 2002-11-20 17:31:42 得分 0
水止如冰,你好!
首先得说说,你的名字起得挺文气的,好!
本人在此之前写了如下一段代码:
Dim db As Database
Dim X As Integer
Dim TDF As TableDef
Set db = OpenDatabase(DBPath)
For X = 0 To db.TableDefs.Count - 1
Set TDF = db.TableDefs(X)
If (TDF.Attributes And dbSystemObject) = 0 Then
db.Execute "Delete * From [" & db.TableDefs(X).Name & "]"
End If
Next X
觉得清空数据库的效率很高,速度很快,但是琢磨半天就是连不上设了安全机制的数据库,也查了很多资料,还是没有搞掂。你上面的方法我试过是,还是不行,是我学的不好,不能理解其中的关键问题,还请明示。
现在本人的意图就是用上面的代码方式清空数据库,能不能帮我写明一点呢,谢谢!
本人也愿意与你交个朋友,不知可否?
我现在也是1900多分了,前天骂共产党被扣了两分,所以信誉没有你好。
我是QQ是81925128。如果不嫌弃的话,有空的时候来聊聊吧。对不起如果你来的话请说明是的你,因为平时我不怎么去聊天的,怕误了你的信息,还有我是24小时都在线的,但有时候人是不在的,万一不在的话请别误会。Top
14 楼Boible()回复于 2002-11-20 17:38:07 得分 0
水止如冰,你好!
对不起!请教如何压缩数据库。Top
15 楼springlover(水止如心)回复于 2002-11-21 13:10:13 得分 0
1、我的名字是“水止如心”,呵呵,不要给我改名字啊。
2、不知道什么原因你的那段代码在你那不可以,以下的代码在我的机子上是完全可以的,我已经调试通过了,而且数据的确可以被清空。那你要仔细的查看一下你的代码和一些设定了。你的MDW文件是不是通过C:\windows\system\下的WRKGADM.EXE文件(WIN2000在WINNT\SYSTEM32下),用这个文件来创建或连接一个MDW文件。正确的代码如下:
Private Sub Command1_Click()
DAO.DBEngine.SystemDB = "c:\workgroup\cumtuser.mdw" '指定MDW位置
DAO.DBEngine.DefaultUser = "gth" ' 指定用户名
DAO.DBEngine.DefaultPassword = "SPRINGLOVER@" ' 指定密码
Dim db As Database
Dim X As Integer
Dim TDF As TableDef
Set db = OpenDatabase("D:\GZDATA\GONGZIMB.MDB")
For X = 0 To db.TableDefs.Count - 1
MsgBox db.TableDefs(X).Name
Set TDF = db.TableDefs(X)
If (TDF.Attributes And dbSystemObject) = 0 Then
db.Execute "Delete * From [" & db.TableDefs(X).Name & "]"
End If
Next X
End Sub
3、压缩数据库:
1)、关掉所有的连接
2)、DBEngine.CompactDatabase "c:\源.mdb ", "c:\目的.mdb "
3)、删除 源.mdb
4)、重命名 目的.mdb ---》源.mdb
4、你1900多分,怎么还是2颗三角啊。不知道这三角怎么加法,多少分换一个。看别人那么多星,真嫉妒啊,呵呵。
5、我也很高兴和你做朋友。
6、我的QQ:9057388
Top
16 楼springlover(水止如心)回复于 2002-11-21 13:19:50 得分 0
专家分刚刚过300,怎么不变成三个三角呢,多少分才变呢。晕~~~~~~~~~~~~~~Top
17 楼mazhayang(蚂蚱先生)回复于 2002-11-21 13:38:10 得分 0
我觉得最好不要在 DefaultUser DefaultPassword 设定用户名和密码,而在workspace的创建中设置为好。Top
18 楼springlover(水止如心)回复于 2002-11-25 23:05:53 得分 0
这个问题可以结贴了!Top
19 楼chenyu5188(来自东方的狼)回复于 2002-12-04 06:14:58 得分 0
UPTop
20 楼srxgs()回复于 2002-12-04 21:03:42 得分 0
是可以结贴了。
凑个热闹:to springlover(水止如心)
为何我用ADO的方式连接如下,却总提示“找不到可安装的ISAM”:
sConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "User ID=1234;" _
& "Password=1234;" _
& "Data Source=" & App.Path & "\db4.mdb;" _
& "Mode=ReadWrite|Share Deny None;Persitst Security Info=false;" _
& "Jet OlEDB:System database=" & App.Path & "\Secured.mdw"
Top




