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;
        }
相关推荐
IvorySQL15 小时前
PostgreSQL 技术日报 (3月6日)|为什么 Ctrl-C 在 psql 里让人不安?
数据库·postgresql·开源
NineData16 小时前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
IvorySQL21 小时前
PostgreSQL 技术日报 (3月5日)|规划器控制力升级,内核能力再进阶
数据库·postgresql·开源
数据组小组1 天前
免费数据库管理工具深度横评:NineData 社区版、Bytebase 社区版、Archery,2026 年开发者该选哪个?
数据库·测试·数据库管理工具·数据复制·迁移工具·ninedata社区版·naivicat平替
悟空聊架构2 天前
基于KaiwuDB在游乐场“刷卡+投币”双模消费系统中的落地实践
数据库·后端·架构
IvorySQL2 天前
PostgreSQL 技术日报 (3月4日)|硬核干货 + 内核暗流一网打尽
数据库·postgresql·开源
进击的丸子2 天前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端
晨星shine3 天前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#
NineData3 天前
NineData智能数据管理平台新功能发布|2026年1-2月
数据库·sql·数据分析