>> Lazarus¿¡¼ ZeosDBO¸¦ »ç¿ëÇؼ Firebird¿¡ Á¢¼ÓÇÒ¶§ ÆÄÀϸíÀÌ Çѱ۷ΠµÇ¾îÀÖÀ¸¸é ÆÄÀÏÀ» ÀÐÁö ¸øÇÏ´õ±º¿ä. UTF8ToSys()³ª UTF8ToAnsi()¸¦ »ç¿ëÇصµ ¸¶Âù°¡Áö¿´½À´Ï´Ù. CreateFile(open)¿¡¼ ¹Ù·Î ¿À·ù¸¦ ÀÏÀ¸Åµ´Ï´Ù. ÇÏÁö¸¸ TIBConnectionÀº DatabaseName¿¡ UTF8ToSys()¸¦ Àû¿ëÇϸé Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´õ±º¿ä. >> >> ZeosDBO°¡ TSQLConnectionº¸´Ù ¼Óµµ°¡ »¡¶ó¼ ÁÁ¾ÆÇߴµ¥, ÀÌÁ¨ TIBConnection¿¡¼ autocommit ²ô°í µ¹¸° ´ÙÀ½¿¡ ¼öµ¿À¸·Î commitÇÏ´Â°Ô ³ªÀ» °Í °°½À´Ï´Ù. ¾Æ¹«·¡µµ µ¨ÆÄÀÌ¿ëÀ¸·Î ¸¸µé¾îÁø ÄÄÆ÷³ÍÆ®´Ùº¸´Ï Lazarus Áö¿øÀº ½â ÁÁÁö ¾ÊÀº °Í °°½À´Ï´Ù. >> >> Lazarus 1.2.4, ZeosDBO 7.1.3a, Firebird 2.5¿¡¼ È®ÀÎÇß½À´Ï´Ù.
ZDbInterbase6.pas¿¡¼
procedure TZInterbase6Connection.Open; const sCS_NONE = 'NONE'; var DPB: PAnsiChar; FDPBLength: Word; DBName: array[0..512] of AnsiChar; TmpClientCodePageOld, TmpClientCodePageNew: PZCodePage; {$ifdef WINDOWS} AnsiDBName:Ansistring; {$endif} begin if not Closed then Exit;
if TransactIsolationLevel = tiReadUncommitted then raise EZSQLException.Create('Isolation level do not capable');
DPB := GenerateDPB(Info, FDPBLength, FDialect);
if HostName <> '' then begin if Port <> 3050 then {$IFDEF WITH_STRPCOPY_DEPRECATED}AnsiStrings.{$ENDIF}StrPCopy(DBName, ZPlainString(HostName + '/' + IntToStr(Port) + ':' + Database)) else {$IFDEF WITH_STRPCOPY_DEPRECATED}AnsiStrings.{$ENDIF}StrPCopy(DBName, ZPlainString(HostName + ':' + Database)) end else {$IFDEF WITH_STRPCOPY_DEPRECATED}AnsiStrings.{$ENDIF}StrPCopy(DBName, ZPlainString(Database));
try { Create new db if needed } if Info.Values['createNewDatabase'] <> '' then begin {$ifdef WINDOWS} AnsiDBName:=Utf8ToAnsi(Info.Values['createNewDatabase']); CreateNewDatabase(AnsiDBName); {$else} CreateNewDatabase(Info.Values['createNewDatabase']); {$endif} { Logging connection action } DriverManager.LogMessage(lcConnect, PlainDriver.GetProtocol, Format('CREATE DATABASE "%s" AS USER "%s"', [Info.Values['createNewDatabase'], User])); URL.Properties.Values['createNewDatabase'] := ''; //Allready Connected now if successfully created end else begin FHandle := 0; { Connect to Interbase6 database. } {$ifdef WINDOWS} AnsiDBName:=Utf8ToAnsi(DBName); GetPlainDriver.isc_attach_database(@FStatusVector, {$IFDEF WITH_STRLEN_DEPRECATED}AnsiStrings.{$ENDIF}Length(AnsiDBName), PAnsiChar(AnsiDBName), @FHandle, FDPBLength, DPB); {$else} GetPlainDriver.isc_attach_database(@FStatusVector, {$IFDEF WITH_STRLEN_DEPRECATED}An
|