NonSoft

アクセスMDBのパスワードを変更するサンプル(C#.NET)


 サンプル(ソース/コード)
<このサンプルの概要>
System.Data.OleDbを使用しアクセスMDBのパスワードを変更するサンプル(C#.NET) です。

アクセスMDBのパスワードを変更するSQLは"ALTER DATABASE PASSWORD [NewPsw] [OldPsw]"です。
このSQLを実行するには排他モードでDBオープンする必要があるため、コネクション文字列に
"Mode=Share Exclusive;"を指定する必要があります。

ところで、、、
このサンプルではプロバイダとしてMicrosoft.Jet.OLEDB.4.0を使用していますが、
これはx86(32ビット)でのみ有効でx64(64ビット)では使用出来ません。
x64(64ビット)のパソコンでMicrosoft.Jet.OLEDB.4.0を使用するためには、
x86(32ビット)モードでコンパイルする必要があります。
x86(32ビット)モードでコンパイルするためには、[プロジェクト]の[プロパティ]で
[ビルド]の[プラットフォーム ターゲット]を[x86]にします。

データベース関係のその他のサンプル(VB6/VB.NET/C#.NET)はこちらです。
データベース関係のその他のサンプル(VB6/VB.NET/C#.NET)

★クラス(Class1.cs)
using System.Data.OleDb;

class Class1
{
    /// <summary>
    /// ACCESS MDBファイルのパスワード変更
    /// </summary>
    /// <param name="mdbp">MDBファイルPATH</param>
    /// <param name="oldp">旧パスワード</param>
    /// <param name="newp">新パスワード</param>
    public static void AccessMdbPasswd(String mdbp, String oldp, String newp)
    {
        // ACCESS MDB オープン
        OleDbConnection dbCon = new OleDbConnection();
        String cst = "";
        cst = cst + "Provider=Microsoft.Jet.OLEDB.4.0;";
        cst = cst + "Data Source=" + mdbp + ";";
        if (oldp != "")
        {
            cst = cst +
            "Jet OLEDB:Database Password=" + oldp + ";";
        }
        cst = cst + "Mode=Share Exclusive;";
        dbCon.ConnectionString = cst;
        dbCon.Open();

        // 旧パスワード用のSQL生成
        if (oldp == "")
        {
            oldp = "NULL";
        }
        else
        {
            oldp = "[" + oldp + "]";
        }

        // 新パスワード用のSQL生成
        if (newp == "")
        {
            newp = "NULL";
        }
        else
        {
            newp = "[" + newp + "]";
        }

        // ACCESS MDB パスワード変更
        String sql =
            "ALTER DATABASE PASSWORD " + newp + " " + oldp;
        OleDbCommand dbCmd = new OleDbCommand(sql, dbCon);
        dbCmd.ExecuteNonQuery();

        // ACCESS MDB クローズ
        dbCon.Close();
        dbCon.Dispose();
    }
}

★フォームモジュール(Form1.cs)
public partial class Form1 : Form
{
    private void Button1_Click(object sender, EventArgs e)
    {
        // パスワード(無し)→パスワード(abc)変更
        Class1.AccessMdbPasswd(@"D:\Temp\db1.mdb", "", "abc");

        // パスワード(abc)→パスワード(123)変更
        Class1.AccessMdbPasswd(@"D:\Temp\db1.mdb", "abc", "123");

        // パスワード(123)→パスワード(無し)変更
        Class1.AccessMdbPasswd(@"D:\Temp\db1.mdb", "123", "");
    }
}