안녕하세요. 파이어버드를 시작한지 하루된 초보 델피언입니다.
제가 만들려고 하는건 간단한 ip정보 입력 프로그램입니다.
사용중인 버전은 Firebird 2.5 입니다.
제 로컬피씨 아이피를 입력해서 테스트 하려고 하는데요.
TIBDatabase 컴포넌트에서 Connection을 Local로 하고 테스트 하면 Unvailable Database 오류가 나고
Remote로 server를 제 아이피로 protocol을 TCP로 하면 테스트에 성공합니다.
아래는 인터넷에서 찾다가 형식을 수정해서 델파이에 올린 쿼리입니다. 근데 에러가 발생합니다.
C:\WINDOWS\system32\drivers\etc\Service 파일에 gds_db 3050/tcp 지정도 되어있습니다.
아시는분 가르침을 부탁드립니다. 초보가 알아들을 수 있도록 ㅠ.ㅠ
procedure TForm1.BitBtn1Click(Sender: TObject);
var
idFbDb : TIBDatabase;
itTrans : TIBTransaction;
iqSql : TIBQuery;
begin
// 데이터베이스 설정
idFbDb := TIBDatabase.Create(nil);
idFbDb.SQLDialect := 3;
idFbDb.Params.Add('USER,"SYSDBA"');
idFbDb.Params.Add('PASSWORD,"masterkey"');
idFbDb.DatabaseName := '100.100.100.100\3050\D:\IpAddr\IPDB.FDB';
idFbDb.LoginPrompt := false;
idFbDb.Connected := True;
// Transaction 설정
itTrans := TIBTransaction.Create(nil);
itTrans.DefaultDatabase := idFbDb;
idFbDb.DefaultTransaction := itTrans;
// Query 설정
iqSql := TIBQuery.Create(nil);
iqSql.Database := idFbDb;
iqSql.Transaction := itTrans;
iqSql.SQL.Add('INSERT INTO T_PC');
iqSql.SQL.Add('(PCID, PCTY, PCMD, PCDT, CPU, MEMORY, HDD)');
iqSql.SQL.Add('VALUES');
iqSql.SQL.Add('(:P_PCID, :P_PCTY, :P_PCMD, :P_PCDT, :P_CPU, :P_MEMORY, :P_HDD)');
iqSql.Prepare;
iqSql.ParamByName('P_PCID').AsString := Edit1.Text;
iqSql.ParamByName('P_PCTY').AsString := Edit2.Text;
iqSql.ParamByName('P_PCMD').AsString := Edit3.Text;
iqSql.ParamByName('P_PCDT').AsString := Edit4.Text;
iqSql.ParamByName('P_CPU').AsString := Edit5.Text;
iqSql.ParamByName('P_MEMORY').AsString := Edit6.Text;
iqSql.ParamByName('P_HDD').AsString := Edit7.Text;
try
if not itTrans.InTransaction then
ittrans.StartTransaction;
// SQL 문 실행
iqSql.ExecSQL;
itTrans.Commit;
except
on e:Exception do
end;
iqSql.Close;
iqSql.Free;
itTrans.Free;
idFbDb.Free;
end;
--에러메세지는
Unable to complete network request to host "100.100.100.100\3050\D",
Failed to locate host machine.
The specified name was not found in the hosts file or Domain Name Services'.
|