±ÍÇÏ´Â ¼Õ´Ô À̽ʴϴÙ
·Î±×ÀÎ
ȸ¿ø°¡ÀÔ
  
  µ¨¸¶´ç °ø½Ä ÀºÇà°èÁÂ
  ÇϳªÀºÇà 227-910235-83607
  ¿¹±ÝÁÖ ÀÌ»ó±¹(¿î¿µÁø)
ÇÁ·ÎÁ§Æ® °Ô½ÃÆÇ
ÅõÇ¥°Ô½ÃÆÇ
µ¨¸¶´ç¼Ò°³
±âÃʺÎÅÍ È°¿ë±îÁö! µ¨ÆÄÀÌ ±³À° - µ¥ºê±â¾î
lazarus lazarus ÀÔ´Ï´Ù.
±Û³»¿ë - lazarus
 [´äº¯]Lazarus+Firebird+ZeosDBO: Çѱ۠ÆÄÀϸí Àб⠺Ұ¡´É
Æĸ£¼¿
(±èµµ¿Ï)
2014-08-15 ¿ÀÀü 10:16:55
1459ȸ Á¶È¸


µî·ÏµÈ ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
>> 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