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;
        }
相关推荐
Uso_Magic2 分钟前
SQLSERVER__EXPLAIN 常用分析案例。
服务器·数据库·sql
IAtlantiscsdn10 分钟前
Redis面试题总结
数据库·redis·缓存
寒风暖哥1 小时前
Oracle视图查询返回空数据集的分析
oracle·c#
2501_924952691 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
万兴丶1 小时前
Unity用C#完成抖音小游戏接入引力引擎(Gravity Engine)完整指南,一篇文章讲清楚!
unity·c#·游戏引擎·抖音
诗酒当趁年华1 小时前
langchain核心组件1-智能体
数据库·langchain
流星白龙1 小时前
【MySQL】9.MySQL内置函数
android·数据库·mysql
原来是猿1 小时前
MySQL 在 Centos 7环境安装
数据库·mysql·centos
路小雨~1 小时前
Milvus 向量数据库的官方文档笔记
数据库·学习·milvus
老衲提灯找美女1 小时前
数据库约束
数据库