안녕하세요...
CREATE TABLE ~~ 이것은 테이블을 생성하는 구문이잖아요..
근데 테이블을 생성하려고 하면 그 위에 데이터 베이스가 있어야 하는데....
데이터 베이스
ㅣ
테이블
ㅣ
컬럼, 로우 등등...
쿼리로 MS ACCESS 디비를 만드는 법을 모르겠습니다..
ADO를 이용하라는 말씀이 많으신데.. 전 BDE를 사용했습니다...
데이터 베이스를 쿼리로 만드는 법을 몰라서 일단 손으로 .mdb를 만들었습니다.. 그리고 난 후에..
BDE Administrator 에서 ODBC Administrator - 시스템 DSN에서
ODBC Microsoft Access를 추가했습니다. (Microsoft Access driver(*.mdb))
그 후에 Tdatabase, Tquery 컴포넌트를 내려놓고 경로를 맞춰주고..
procedure TForm1.Button1Click(Sender: TObject); //테이블 만들기
begin
try
with Query1 do begin
SQL.Clear;
sql.add(' create table example_9(last_name text(20) ');
sql.add(', first_name text(15) ');
sql.add(', cry float ');
sql.add(', intt int ');
sql.add(', ddd datetime ');
sql.add(', no bit');
sql.add(', primary key(last_name) ) ');
execSQL;
end;
showmessage('테이블 생성 완료!!');
except
Application.MessageBox('테이블 생성도중 Error 발생!!!','알림',mb_ok+mb_IconInformation);
Query1.Close;
Query1.Free;
Exit;
end;
end;
이렇게 테이블을 생성했습니다... 생성은 잘 됩니다...
mdb 데이터 베이스 생성하는 것을 검색해보니 있기는 한데 해보니..
procedure TForm1.Button2Click(Sender: TObject); //데이터 베이스 만들기
begin
if SQLConfigDataSource(Handle, 1, LPCSTR('Microsoft Access Driver (*.mdb)'), LPCSTR('CREATE_DB = D:\Bang\MDB디비만들기\ATest.mdb General')) then begin
ShowMessage('MDB 파일을 성공적으로 만들었습니다.');
exit;
end else begin
ShowMessage('MDB 파일을 생성하는데 실패했습니다.');
exit;
end;
end;
반응이 없습니다... 'MDB 파일을 생성하는 데 실패했습니다' 메세지가 뜹니다.. ㅠ
무슨 조건이 하나더 있는 건가요? 꼭 좀 부탁드리겠습니다...
function SQLConfigDataSource(hwndParent : HWND; fRequest : WORD; lpszDriver : LPCSTR; lpszAttributes : LPCSTR) : Boolean; stdcall; external 'ODBCCP32.DLL';
function Tdm.NewDBCreateofDAO(ADBPath:String):Boolean;
var
WorkSp, DBEngine : OLEvariant;
begin
//MDAC 2.7이 등록되어 있어야 한다.
try
Result := False;
try
//레지스트리에 등록되어 있는 엔진버젼.. 현재 MDAC 2.7 인스톨 테스트
DBEngine := CreateOleObject(DAO_DB_ENGINE_VER);
//DAO DBEngine의 작업공간
WorkSp := DBEngine.WorkSpaces[0];
if FileExists(pAnsiChar(ADBPath)) then
DeleteFile(pAnsiChar(ADBPath));
//Access 2000 type으로 생성
try
WorkSp.CreateDataBase(ADBPath, DB_LANG_KOREAN + DEFAULT_DB_PASSWORD,DB_VERSION40);
Result := True;
except
on e : exception do
begin
Result := False;
WriteLog('회원사 데이터 베이스 생성 실패 : Create Path is '+ ADBPath + e.Message);
end;
end;
except
MessageDlgTimer('MDAC 2.7이 설치 되어 있지않습니다.','회원사 DB 생성 에러');
end;
finally
DBEngine := NULL;
WorkSp := NULL;
end;
end;
function Tdm.NewDBCreate(APath:String):Boolean;
var
ls_DBPath : String;
begin
try
ls_DBPath := APath + DEFAULT_DBNAME;
Result := SQLConfigDataSource(Application.Handle, 1,
LPCSTR(OLEDB_DRIVER_NAME),
LPCSTR('CREATE_DB=' + ls_DBPath + ' General'));
except
on e : exception do
begin
WriteLog('회원사 데이터 베이스 생성 실패후 재시도 : Error DBPath is '+ls_DBPath + e.Message);
Result := dm.NewDBCreateOfDAO(ls_DBPath);
end;
end;
end;
리소스 자료실에 보시면 참고할만한 셈플 소스코드가 있습니다.
수고하세요.