Firebird adatbázis elérése Delphi 2009 bol

Firebird adatbázis elérése Delphi 2009 bol
2009-01-16T19:13:59+01:00
2009-06-22T09:18:51+02:00
2022-11-14T01:20:35+01:00
vx99vx99
Hali ! Kédésem lenne. Szeretnék Firbird adatbázist elérni Delphi 2009 bol. A Delphiben van TIBDatabase komponoen, de az Interbase adatbázist akar csak elérni. Találtam egy Firebird DBX4 Driver TBODBXFB, de az meg hibát ir ki, "Unable to load tbodbxfb.dll (ErrorCode 126) It may be missing from the system path". pedig ellenoriztem ott van, sot még a delhi konyvtátrában is.
Mutasd a teljes hozzászólást!
Igen most igy van beállítva a 3050 az IBs a 3051 es a FBs, de a Delphibol az IBdtatbase mindig csak ahhoz kapcsolodik amelyik a 3050 es van. Igy feladtam, inkább leinsalláltam az IB és visszaállítottam a FB a 3050 re és igy mukodik. Mondjuk hállozatban talán meg lehet oldani, hogy midketto mukodjon, mert ott be lehet adni az IPt meg a portot is. Localhost esetében nekem nem ment.
Mutasd a teljes hozzászólást!

  • 2007 alól simán lehet kezelni a firebird adatbázist az IBDatabase komponensen keresztül.
    Mit jelent az, hogy csak "Interbase adatbázist akar elérni"?
    Mutasd a teljes hozzászólást!
  • Sejtésem:
    Interbase: *.GDB
    FireBird: *.FDB

    Próbáld meg: FDB-t nezed át GDB-re, vagy eleve úgy hozd létre a FireBird adatbázist, hogy GDB!
    Mutasd a teljes hozzászólást!
  • Hát sajna nem ilyen egyszeru. Szerintem az IterBase nem igen szeretné, hogy az o komponenseivel elérjék az ingyenes Firebirdet, és azért változtattak rajta egy kicsit. Nehogy már kompatibilis maradjon.
    Mutasd a teljes hozzászólást!
  • Biztos, hogy nem ez a probléma. Az IBX-et nem az InterBase csinálja, hanem Jeff Overcash, aki mindkét verzióval kompatibilisen tartja a csomagot. Igaz, hogy nem minden új FB fícsört támogat, de tökéletesen megy vele. Én csak ezt használom 6 éve. Nem lehet, hogy Te a Delphi telepítőben lévő IB7-et toltad fel? Mert akkor neked IB7 kliens van a gépeden, amivel természetesen nem fogsz elérni FB adatbázist, hiába is akarnád. Ahhoz FB klienskönyvtár is kell (nameg szerverről nem is beszélve). Teljesen más a két esetben a lemezen való tárolás szerkezete (ODS), illetve az API is. Tisztába kell tenni a dolgokat, mert nem teljesen érthető a szituáció.
    Mutasd a teljes hozzászólást!
  • Szia!

    Firebird: The true open source database for Windows, Linux, Mac OS X and more
    Ez az első amit figyelmedbe ajánlok.
    A Firebird 2.1-est szeretnéd elérni, ha jól sejtem.
    A dokumentációban részletesen le van írva minden.
    Gondolom szerver-kliens alkalmazást szeretnél írni. Tedd fel a gépre a szuperszervert. Figyelj a gd32.dll-re interbase is azt használja vagy egyik vagy másik. Nálam pl. Delphi7 Van fenn és telepítés után letoltam az interbase server részét és utána fel a firebirdöt, hogy ne akadjanak össze. Ezután felraktam az ODBC drivert. A connection string amire oda kell figyelni és akár interbases komponensekkel is tudsz hozzá csatlakozni.
    figyelj oda, hogy ip cím vagy gépnév az 1.5-nél még másképpen volt. Username és password-öt is állítsd be hozzá (alapból SYSDBA, Masterkey). A dokumentációja elég részletes a Firebirdnek érdemes elolvasni.

    Egyszerű kapcsolat lértehozása meglévő adatbázishoz:
    TIBDatabase komponens (neve legyen DB)
    DatabaseName: localhost:c:\...\adatbázis.fdb
    a paramsba:
    user_name=SYSDBA
    password=masterkey
    lc_ctype=WIN1250

    Kapcsold ezt össze egy TIBTransaction komponenssel neve legyen (pl. TS)

    Kódból nézve pedig valami hasonló lesz:

    DB.DatabaseName:=Servernev+':'+Seged.DatabaseDir+Seged.Databname;
    DB.Params.Clear;
    DB.Params.Add('user_name=SYSDBA');
    DB.Params.Add('password=masterkey');
    DB.Params.Add('lc_ctype=WIN1250');
    try
    DB.Connected:=True;
    except
    ON EIBInterBaseError do
    begin
    Showmessage('Kapcsolódási hiba! Forduljon a rendszergazdához vagy állítsa be manuálisan a kapcsolódási paramétereket');
    Showmessage('A programot bezárom!');
    close;
    end;
    end;
    Mutasd a teljes hozzászólást!
  • Hali !
    Kísérleteztem. Szoval felraktam a FB 2.1 es-t. A portot áttálítottam 3051 re hogy ne problémázzon az InterBase el. Igy most mind a 2 fut. Kiprobaltam SQL Managerrel, meg tudom nyitni az IB és FB adatbázist is egyidejuleg. Tehát van egy IBs localhost, meg egy FBs localhost1 és mindketto fut egyszerre.
    Ezután a Delphiben felraktam egy IBdatabaset amiben kitoltottem a paramétereket. A Test gom lenyomása után az jon be hogy "Unavailable database"
    [40790927]{ibxpress120.bpl} Ib.IBDataBaseError + $2FF
    [4077DA03]{ibxpress120.bpl} Ibdatabase.TIBDatabase.DoConnect + $24B
    [50483579]{dbrtl120.bpl} DB.TCustomConnection.SetConnected (Line 3064, "DB.pas" + 8) + $4
    [099CB855]{dclib120.bpl} Ibdatabaseedit.TIBDatabaseEditForm.TestClick + $1F1
    [501D1163]{vcl120.bpl } Controls.TControl.Click (Line 6756, "Controls.pas" + 9) + $8
    [5014245E]{vcl120.bpl } StdCtrls.TCustomButton.Click (Line 4421, "StdCtrls.pas" + 3) + $2
    [50142EC0]{vcl120.bpl } StdCtrls.TCustomButton.CNCommand (Line 4855, "StdCtrls.pas" + 1) + $D
    [501D0BFA]{vcl120.bpl } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6
    [501D5287]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) + $6
    [50142124]{vcl120.bpl } StdCtrls.TButtonControl.WndProc (Line 4269, "StdCtrls.pas" + 13) + $4
    [501D0820]{vcl120.bpl } Controls.TControl.Perform (Line 6418, "Controls.pas" + 10) + $8
    [501D53D7]{vcl120.bpl } Controls.DoControlMsg (Line 9403, "Controls.pas" + 12) + $11
    [501D5E33]{vcl120.bpl } Controls.TWinControl.WMCommand (Line 9673, "Controls.pas" + 1) + $5
    [501D0BFA]{vcl120.bpl } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6
    [501D5383]{vcl120.bpl } Controls.TWinControl.DefaultHandler (Line 9375, "Controls.pas" + 30) + $17
    [501D0BFA]{vcl120.bpl } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6
    [501D5287]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) + $6
    [20B89C5E]{designide120.bpl} DeskUtil.SetFocusHook (Line 435, "DeskUtil.pas" + 4) + $C
    [501D49A0]{vcl120.bpl } Controls.TWinControl.MainWndProc (Line 9063, "Controls.pas" + 3) + $6
    [50057E04]{rtl120.bpl } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0
    [501D5287]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) + $6
    [501D5383]{vcl120.bpl } Controls.TWinControl.DefaultHandler (Line 9375, "Controls.pas" + 30) + $17
    [501D1580]{vcl120.bpl } Controls.TControl.WMLButtonUp (Line 6889, "Controls.pas" + 1) + $6
    [501D0BFA]{vcl120.bpl } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6
    [501D4B93]{vcl120.bpl } Controls.TWinControl.IsControlMouseMsg (Line 9119, "Controls.pas" + 1) + $9
    [501D5287]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) + $6
    [50142124]{vcl120.bpl } StdCtrls.TButtonControl.WndProc (Line 4269, "StdCtrls.pas" + 13) + $4
    [501D49A0]{vcl120.bpl } Controls.TWinControl.MainWndProc (Line 9063, "Controls.pas" + 3) + $6
    [50057E04]{rtl120.bpl } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0
    [500618CE]{rtl120.bpl } Contnrs.TComponentList.GetItems (Line 380, "Contnrs.pas" + 1) + $4
    [501F9EAB]{vcl120.bpl } Forms.TApplication.ProcessMessage (Line 9613, "Forms.pas" + 23) + $1
    [501F9EEE]{vcl120.bpl } Forms.TApplication.HandleMessage (Line 9643, "Forms.pas" + 1) + $4
    [501F5827]{vcl120.bpl } Forms.TCustomForm.ShowModal (Line 6558, "Forms.pas" + 29) + $5
    [099CAE9E]{dclib120.bpl} Ibdatabaseedit.TIBDatabaseEditForm.Edit + $FE
    [099CA6A6]{dclib120.bpl} Ibdatabaseedit.EditIBDatabase + $4A
    [5000CB47]{rtl120.bpl } System.TInterfacedObject.QueryInterface (Line 21551, "System.pas" + 1) + $8
    [099D02CC]{dclib120.bpl} Ibdbreg.TIBDatabaseEditor.ExecuteVerb + $40
    [514A931E]{vcldesigner120.bpl} VCLSurface.TVclDesignSurface.ComponentVerb (Line 2477, "VCLSurface.pas" + 3) + $B
    [501C3CDB]{vcl120.bpl } Menus.TMenuItem.Click (Line 2515, "Menus.pas" + 19) + $8
    [501C532F]{vcl120.bpl } Menus.TMenu.DispatchCommand (Line 3378, "Menus.pas" + 5) + $2
    [501C6586]{vcl120.bpl } Menus.TPopupList.WndProc (Line 4484, "Menus.pas" + 4) + $E
    [501C64D5]{vcl120.bpl } Menus.TPopupList.MainWndProc (Line 4459, "Menus.pas" + 2) + $5
    [50057E04]{rtl120.bpl } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0
    [501F9EAB]{vcl120.bpl } Forms.TApplication.ProcessMessage (Line 9613, "Forms.pas" + 23) + $1
    [501F9EEE]{vcl120.bpl } Forms.TApplication.HandleMessage (Line 9643, "Forms.pas" + 1) + $4
    [501FA219]{vcl120.bpl } Forms.TApplication.Run (Line 9780, "Forms.pas" + 26) + $3
    [004259D2]{bds.exe } bds.bds (Line 196, "" + 7) + $7

    Ugy is kiprobáltam, hogy az IBs system32/gds32.dll konyvtárat lecseréltem az FBs fbclient.dll ra. de valahogy ugy sem megy.

    Lehet most az a gondja, hogy automatikusan a localhost:3050 es portján probalkozik, amin pedig a IB szolgáltatás fut. Ha itt az IBdatabase ban be lehetne állítani a portot 3051 re az FB se, akkor lehet menne is. Szoval most itt tartok. Egyszerubb lenne ha az IB letororolném, de arra is szukség van.
    Mutasd a teljes hozzászólást!
  • Állítsd be a FireBird portját FIXEN valamire a
    firebird.conf fájlban!!!

    # ----------------------------
    # TCP Protocol Settings
    #
    # The TCP Service name/Port number to be used for client database
    # connections.
    #
    # It is only necessary to change one of the entries, not both. The
    # order of precendence is the 'RemoteServiceName' (if an entry is
    # found in the 'services.' file) then the 'RemoteServicePort'.
    #
    # Type: string, integer
    #
    #RemoteServiceName = gds_db
    #RemoteServicePort = 3050

    #
    # The TCP Port Number to be used for server Event Notification
    # messages. The value of 0 (Zero) means that the server will choose
    # a port number randomly.
    #
    # Type: integer
    #
    RemoteAuxPort = 3055

    Én, pl. az Event Notification-t "fogom meg"!!!

    Hátha segít!
    Mutasd a teljes hozzászólást!
  • Igen most igy van beállítva a 3050 az IBs a 3051 es a FBs, de a Delphibol az IBdtatbase mindig csak ahhoz kapcsolodik amelyik a 3050 es van. Igy feladtam, inkább leinsalláltam az IB és visszaállítottam a FB a 3050 re és igy mukodik. Mondjuk hállozatban talán meg lehet oldani, hogy midketto mukodjon, mert ott be lehet adni az IPt meg a portot is. Localhost esetében nekem nem ment.
    Mutasd a teljes hozzászólást!
  • Két dolog is gond lehet, a megoldás ebben az esetben elég egyszerű. Feltéve, hogy az adatbázisok eléréséhez IBX-et használsz mindkét esetben.

    1. Minden programnak a megfelelő gds32.dll-t berakni a futtatási könyvtárába, a System32-ből pedig lehetőség szerint kitakarítani. (Ha fejlesztened kell mindkettőre, az elég nagy gáz, azon még nbem gondolodtam, hogy lehetne megcsinálni.)

    2. Ahogy jól megcsináltad, eltolni a portot a Firebirdben.

    3. A connect line-ban meghatárzoni a Firebird esetében a portot (itt 3051), aminek a szintaxisa a következő: "servername/port:database path"
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd