|
情况描述:
ADOX创建数据库后,ADO连接数据库出现<密码无效>的情况!
代码如下:
Public Sub 创建数据库()
Dim myData$, mySql$
Set myCat = CreateObject("ADOX.Catalog")
Set myCnn = CreateObject("ADODB.Connection")
myData = ThisWorkbook.Path & "\成都进销存管理数据.accdb"
'如果数据库文件不存在,则新建数据库
If Len(Dir(myData)) <> 0 Then
GoTo Con:
Else
myCat.Create "provider=Microsoft.Jet.OLEDB.4.0;" _
& "Jet OLEDB:Database Password=888888;" _
& "data source=" & myData
End If
Con:
'连接数据库
With myCnn
.provider = "microsoft.ace.oledb.12.0;Jet OLEDB:Database Password='888888';"
.Open myData
End With
myCat.activeconnection = myCnn
MsgBox "数据库创建成功!", vbInformation, "创建数据库"
myCnn.Close
Set myCnn = Nothing
Set myCat = Nothing
End Sub
以上代码是利用ADOX.Catalog对象来动态创建数据库, 然后用ADO.Connection连接新创建的数据库.
期初我的 myCat.Create 是这样写的
myCat.Create "provider=Microsoft.ace.OLEDB.12.0;" _
& "Jet OLEDB:Database Password=888888;" _
& "data source=" & myData
这里是用的 provider=Microsoft.ace.OLEDB.12.0, 发现用这个创建的数据库在未去双击打开数据库时, 代码一直都可以连接.
但是我从文件夹里双击打开数据库后, 再开关闭, 回到代码再运行, 就会提示<密码无效>.
在网上各种找资料, 还是没法完美解决连接问题, 我这里主要是要动态新建一个数据, 再连接.
后面找到 provider=Microsoft.ace.OLEDB.12.0 与 provider=Microsoft.Jet.OLEDB.4.0 区别的相关帖子.
既然 provider=Microsoft.Jet.OLEDB.4.0 只支持 97-2003 版本, 那么就利用这个来新创建数据库, 这样就使得ACCESS数据库创建时会用到旧的加密办法.
然后ADO连接是还是用 Microsoft.ace.OLEDB.12.0 来来接, 这样终于解决问题了.
以上为一次学习的经历, 苦于知识太少, 学起来时间浪费的飞快, 分享出来给大家看看, 见笑.
|
|