如何在程序中修改ACCESS数据库的密码?

解决方案 »

  1.   

    function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
    //修改ACCESS数据库密码
    var
    STempFileName:string;
    vJE:OleVariant;
    begin
    STempFileName:=GetTempPathFileName;
    try
    vJE:=CreateOleObject('JRO.JetEngine');
    vJE.CompactDatabase(format(SConnectionString,[AFileName,AOldPassWord]),
    format(SConnectionString,[STempFileName,ANewPassWord]));
    result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
    DeleteFile(STempFileName);
    except
    result:=false;
    end;
    end;
    试一下,我不没有试过
      

  2.   

    //在之前uses ComObj,ActiveX
    //声明连接字符串
    Const 
      SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
        +'Jet OLEDB:Database Password=%s;';function TForm1.GetTempPathFileName():string;
    //取得临时文件名 
    var 
    SPath,Sfile:array [0..254] of char;
    begin 
    GetTempPath(254,SPath);
    GetTempFileName(SPath,'~SM',0,SFile);
    result:=SFile;
    DeleteFile(PChar(result));
    end;function TForm1.ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
    //修改ACCESS数据库密码 
    var 
    STempFileName:string; 
    vJE:OleVariant; 
    begin 
    STempFileName:=GetTempPathFileName; 
    try 
    vJE:=CreateOleObject('JRO.JetEngine'); 
    vJE.CompactDatabase(format(SConnectionString,[AFileName,AOldPassWord]), 
    format(SConnectionString,[STempFileName,ANewPassWord])); 
    result:=CopyFile(PChar(STempFileName),PChar(AFileName),false); 
    DeleteFile(STempFileName); 
    except
    result:=false;
    end;
    end;调用实例:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ChangeDatabasePassword('abc.mdb','123','456');
      showmessage('修改成功!');
    end;本人测试过可以成功修改密码