DELPHI中操作ACCESS數(shù)據(jù)庫

字號:

DELPHI中操作access數(shù)據(jù)庫(建立.mdb文件,壓縮數(shù)據(jù)庫)
    以下代碼在WIN2K,D6,MDAC2.6下測試通過,
    編譯好的程序在WIN98第二版無access環(huán)境下運行成功.
    //聲明連接字符串
    Const
    SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
     +'Jet OLEDB:Database Password=%s;';
    //=============================================================================
    // Procedure: GetTempPathFileName
    // Author : ysai
    // Date : 2003-01-27
    // Arguments: (None)
    // Result : string
    //=============================================================================
    function GetTempPathFileName():string;
    //取得臨時文件名
    var
    SPath,Sfile&:array [0..254] of char;
    begin
    GetTempPath(254,SPath);
    GetTempFileName(SPath,'~SM',0,SFile);
    result:=SFile;
    DeleteFile(result);
    end;
    //=============================================================================
    // Procedure: CreateaccessFile
    // Author : ysai
    // Date : 2003-01-27
    // Arguments: FileName:String;PassWord:string=''
    // Result : boolean
    //=============================================================================
    function CreateaccessFile(FileName:String;PassWord:string=''):boolean;
    //建立access文件,如果文件存在則失敗
    var
    STempFileName:string;
    vCatalog:OleVariant;
    begin
    STempFileName:=GetTempPathFileName;
    try
     vCatalog:=CreateOleObject('ADOX.Catalog');
     vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
     result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
     DeleteFile(STempFileName);
    except
     result:=false;
    end;
    end;
    //=============================================================================
    // Procedure: CompactDatabase
    // Author : ysai
    // Date : 2003-01-27
    // Arguments: AFileName,APassWord:string
    // Result : boolean
    //=============================================================================
    function CompactDatabase(AFileName,APassWord:string):boolean;
    //壓縮與修復數(shù)據(jù)庫,覆蓋源文件
    var
    STempFileName:string;
    vJE:OleVariant;
    begin
    STempFileName:=GetTempPathFileName;
    try
     vJE:=CreateOleObject('JRO.JetEngine');
     vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),
     format(SConnectionString,[STempFileName,APassWord]));
     result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
     DeleteFile(STempFileName);
    except
     result:=false;
    end;
    end;