You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用DAO为VB6程序中的Access数据库添加或移除密码?

如何通过DAO为Access数据库程序化添加/移除密码

针对VB6+DAO场景下无法为无密码Access库添加密码、或移除已有密码的问题,核心解决要点是正确使用空字符串("")而非vbNullString作为参数,同时必须以独占方式打开数据库。以下是具体实现方法:

添加密码到无密码数据库

需先以独占、无密码方式打开数据库,再调用NewPassword方法,旧密码参数传入空字符串:

Dim db As DAO.Database
On Error GoTo ErrorHandler
' 独占模式打开无密码数据库,最后一个参数为空字符串表示无密码
Set db = OpenDatabase("C:\Path\To\YourDatabase.mdb", True, False, "")
' 执行添加密码操作:旧密码为空字符串,新密码为目标密码
db.NewPassword "", "YourNewPasswordHere"
MsgBox "密码添加成功"

ExitHandler:
    If Not db Is Nothing Then
        db.Close
        Set db = Nothing
    End If
    Exit Sub

ErrorHandler:
    MsgBox "添加密码失败:" & Err.Description & " (错误码:" & Err.Number & ")"
    Resume ExitHandler

移除已有数据库的密码

需先以独占、带密码方式打开数据库,再调用NewPassword方法,新密码参数传入空字符串:

Dim db As DAO.Database
On Error GoTo ErrorHandler
' 独占模式打开带密码的数据库,通过连接字符串指定密码
Set db = OpenDatabase("C:\Path\To\YourDatabase.mdb", True, False, ";PWD=YourExistingPassword")
' 执行移除密码操作:旧密码为当前密码,新密码为空字符串
db.NewPassword "YourExistingPassword", ""
MsgBox "密码移除成功"

ExitHandler:
    If Not db Is Nothing Then
        db.Close
        Set db = Nothing
    End If
    Exit Sub

ErrorHandler:
    MsgBox "移除密码失败:" & Err.Description & " (错误码:" & Err.Number & ")"
    Resume ExitHandler

关键说明

  1. 参数区分:Jet DAO引擎仅接受""(空字符串)作为合法的空密码参数,vbNullString会被识别为无效输入,从而触发3031错误。MSDN文档中提到的“空字符串”指的是""而非vbNullString。
  2. 独占打开要求:修改数据库密码必须以独占模式打开(OpenDatabase的第二个参数Exclusive设为True),否则会因权限不足导致操作失败。
  3. 单用户场景验证:确保操作时数据库未被其他进程或应用占用,否则独占打开会失败。

内容的提问来源于stack exchange,提问作者Mark Moulding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:12:12