c#使用OleDb库更改Access数据库的密码

技术要点

流程

  1. 使用OleDbConnection对象连接数据库。
  2. 使用OleDbCommand对象执行修改数据库密码的操作。

技术要点

  • 注意使用OleDbConnection对象时,需要使用独占方式 打开,使用此种方式打开,才能够修改数据库的密码,方式为在连接字符串中设置参数Mode=Share Exclusive;
  • 如果要更改密码的数据库已经设置了密码,则需要在连接字符串中使用Jet OLEDB:Database Password='原密码';的方式来指定原来的密码,不然在OleDbConnection对象连接时会提示密码无效。
连接字符串示例
csharp 复制代码
$"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={db};Mode=Share Exclusive;Jet OLEDB:Database Password='{nowPassword}'";
  • 要执行的数据库语句为$"ALTER DATABASE PASSWORD [{newPwd}] [{nowPwd}];"
    需要注意:
    此语句中新密码参数在前面,旧密码参数在后面 。在调试程序时,根据GPT说的先写旧密码后写新密码,整了好长时间,最后才发现是需要将新密码写在前面的。
    如果旧密码为空值 ,在语句中使用NULL代替。如果需要解密数据库,则将新密码设置为NULL
更改密码语句示例
csharp 复制代码
$"ALTER DATABASE PASSWORD [{pwd}] NULL;" //将未加密的数据库使用密钥 pwd 进行加密
$"ALTER DATABASE PASSWORD NULL [{nowPwd}];" //将加密的数据库使用密钥 nowPwd 进行解密,得到的数据库是无密码的数据库
$"ALTER DATABASE PASSWORD [{newPwd}] [{nowPwd}];" //将使用 nowPwd 密码加密的数据库改为使用 newPwd 密码加密

程序示例

csharp 复制代码
        /// <summary>
        /// 使用密码加密数据库
        /// </summary>
        /// <param name="db"></param>
        /// <param name="pwd"></param>
        /// <returns></returns>
        private bool ecrDb(string db, string pwd)
        {
            try
            {
                using (OleDbConnection odc = new OleDbConnection())
                {
                    odc.ConnectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={db};Mode=Share Exclusive;";
                    odc.Open();
                    
                    using (OleDbCommand cmd = new($"ALTER DATABASE PASSWORD [{pwd}] NULL;", odc))
                    {
                        cmd.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }

            return true;
        }
相关推荐
林川~013 小时前
Unity 万能物理检测工具:射线检测 / 范围检测 / 层级过滤 / 编辑器可视化(可直接拿去用)
游戏·unity·c#·射线检测·通用工具
Hrain-AI4 小时前
多 Agent 并行不打架:worktree 隔离与反馈回流落地(附脚本)
网络·数据库·人工智能·架构
净水深流4 小时前
中央厨房冷链技术实践:多温区改造、WMS落地与IoT温控架构
大数据·数据库·人工智能·冷库冷链
l1t5 小时前
测试DuckDB 2.1的match_recognize模式匹配语句
数据库·duckdb
IpdataCloud6 小时前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
曹牧6 小时前
Java:SQL 注入漏洞
数据库
程序员JerrySUN6 小时前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
oradh7 小时前
Oracle Undo问题总结(ORA-600 [4xxx] 系列错误)
数据库·oracle
达梦数据7 小时前
DMDRS辅助表生成规则与作用
数据库·oracle
‎ദ്ദിᵔ.˛.ᵔ₎7 小时前
MySQL 表约束
数据库·mysql