프로그래밍 노트

델파이로 MDB 만들기 본문

델파이

델파이로 MDB 만들기

띠리 2007. 11. 20. 17:05
델파이로 MDB 데이터베이스 만들기
MDB 패스워드 설정하기
MDB 패스워드 변경하기
MDB 최적화하기




uses
  Windows, Messages, SysUtils, Variants, Classes,
  Graphics, Controls, Forms, Dialogs,
  ComObj, ActiveX, StdCtrls;

// 데이터베이스 생성(MDB)
function CreateDB(const sPath: string;
                  var sErr: string): Boolean;
const
    csConnStr = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source="%s"';
var
    oleCatalog: OleVariant;
    sConnStr: string;
begin
    Result := false;
    sConnStr := Format(csConnStr, [sPath]);
    try
        try
            oleCatalog := CreateOleObject('ADOX.Catalog');
            oleCatalog.Create(sConnStr);
        finally
            oleCatalog := Unassigned;
        end;
        Result := true;
    except
        on Err:Exception do sErr := Err.Message;
    end;
end;


// 패스워드 설정/변경
// 데이터베이스 최적화하기
function ChangePWD(const sPath, sOldPass, sNewPass: string;
                   var sErr: string): Boolean;
const
    CONN_STR = 'Data Source="%s";Jet OLEDB:Database Password=%s';
var
    ovEngine: OleVariant;
    sBakPath: string;
    sStr1, sStr2: string;
begin
    Result := false;
    // 백업파일 패스
    sBakPath := ChangeFileExt(sPath, '.bak');
    // 기존 백업 파일 삭제
    DeleteFile(sBakPath);

    sStr1 := Format(CONN_STR, [sPath, sOldPass]);
    sStr2 := Format(CONN_STR, [sBakPath, sNewPass]);
    try
        try
            ovEngine := CreateOleObject('JRO.JetEngine');
            // 최적화기능을 이용한 패스워드 설정
            ovEngine.CompactDatabase(sStr1, sStr2);
            // 기존 데이터 삭제
            DeleteFile(sPath);
            RenameFile(sBakPath, sPath);
        finally
            ovEngine := Unassigned;
        end;
        Result := true;
    except
        on Err:Exception do sErr := Err.Message;
    end;
end;



Comments