C++ Builder + Datenbanken ohne BDE oder ähnliches [möglichst einfacher Umstieg]



  • Also.. Ich hatte jetzt eine Anwendung geschreiben und wunderbar einfach Datenbanken eingebaut, und mich gefreut.
    Doch als ich das ganze dann an andere weitergeben wollte kam das böse erwachen. BDE muss nachinstalliert werden , dann muss noch der DB Alias gesetzt werden... und dann kann man hoffen das es geht.

    Ich finde das alles viel zu umständlich, und such nach ner alternative.
    ICh suche nach ner "anderen" Datenbank, die am besten ohne zusätzliches Programm läuft (wenns garnicht geht .. naja ... aber halt auch keinen fall mit dem Alias kram).

    Dann sollte das ganze sich noch gut in Borland C++ builder einpassen (das man nicht 10 jahre friemeln muss damits geht).

    und als gutes Drittes sollte das ganze möglichst nicht zu viel umprogramierung erfordern und sowas wie TQuery fände ich schön 🙂 ..

    Ich bedanke mich schon mal für eure Hilfe



  • Hallo

    Such hier im Forum nach firebird.

    bis bald
    akari



  • ich finde dabei nur 2 beiträge in dem dieses Forums wird firebird nur am rande erwähnt.
    und der andere ist java



  • Hallo

    seltsam, ich finde bei der Suche nach firebird (den roten Text neben der Suchmaske beachten!) zum Beispiel diesen Thread.

    bis bald
    akari



  • Okay das erklärt einiges 🙂

    allerdings bleibt bei mir noch die frage welche version ich brauche von wegen Classic / SuperServer oder irgendwie embed was da noch auftaucht.

    Ausserdem taucht immer mal wieder was von server etc auf... dabei war das doch das was ich vermeiden wollte das programm sollte doch ohne "hilfe " auf die db zugreifen



  • Erstelle für dein Programm doch eine Installations Datei, z.B mit InstallShild. War bei der 5er Version von Borland dabei obe es bei den höheren so ist weiß ich nicht.
    Und steige am besten auf MySQL um, BDE ist absoluter scheiß.
    In deiner Installations Datei kannst du dann auch die Verknüpfungen zur ODBC erstellen.

    Dann brauchst du nur noch die Exe ausführen, Programm installieren und alles ist eingerichtet.



  • summerset83 schrieb:

    Und steige am besten auf MySQL um, BDE ist absoluter scheiß.

    bei letzterem muss ich dir vollkommen recht geben,

    aber jetzt nich schon wieder was neues kein MySQL jetzt mal bei firebird bleiben 😃

    gibts da eine Funktionsweise ohne server?



  • Hallo

    genau dafür ist die Embedded-Version, dann brauchst du keinen zusätzlichen Server.

    bis bald
    akari



  • Alternativ kannst du dir auch SQLite anschauen oder aber wie schon hier gepostet wurde: mysql



  • akari schrieb:

    bis bald

    😃 so kommt das bald doch schnell 😃

    Danach als Beispiel:
    1)Query auswählen und DataBaseName auf meinalias.fdb setzen, SQL-Abfrage mit Stringeditor erzeugen

    //2)DataSource auswählen und Eigenschaft DataSet auf Query1 (SQL-Abfrage)setzen.
    //DBCtrlGrid1 auswählen und Eigenschaft DataSource auf DataSource1 setzen.
    //3)DBText auswählen und auf DBCtrlGrid1 platzieren. DataSource auf DataSource1 //setzen, DataField auf dein benötigtes Tabellen-Feld setzen.
    

    ich gehe jetzt einfach mal davon aus das "SQL-Abfrage mit Stringeditor erzeugen" ne einfache abfrage über das TQuery per SQL ist ..
    (somit ist der erste punkt der einzig interesante für mich...)

    allerdings funktioniert es nicht:
    "Unknown Database.
    Alias Data.fdb"...

    kanns sein das ich die dll noch irgendwie vorher ins projekt linken muss 😕
    in der Readme heißt es lediglich

    Just copy fbembed.dll into the directory with your
    application. Then rename it to either fbclient.dll or
    gds32.dll depending on your database connectivity software.



  • download123 schrieb:

    allerdings funktioniert es nicht:
    "Unknown Database.
    Alias Data.fdb"...

    Just copy fbembed.dll into the directory with your
    application. Then rename it to either fbclient.dll or
    gds32.dll depending on your database connectivity software.

    also, du musst die datei umbenennen nach fbclient.dll; zu deinen projekt musst du nicht extra linken

    was ich bei mir festgestellt habe ist, dass ich im sql-query die datensource in Anführungsstriche setzen muss:
    bsp: Select * From "TableName"; wobei TableName, der name für TableName.fdb ist

    hoffe das hilft dir

    greetz



  • es geht keins von beiden ... wenn ich als Database name DATA.FDB angebe, bekomme ich fehler von wegen ... "EDB Engine Erorr with message 'Unknown database Alias : DATA.FDB'."...

    wenn ichs einfach weglasse heißt es
    EDB Engine Erorr with message 'Table does not exist. File or directory does not exist ..."

    wenn ichs so mache

    dass ich im sql-query die datensource in Anführungsstriche setzen muss:
    bsp: Select * From "TableName"; wobei TableName, der name für TableName.fdb ist
    

    streikt der compiler *Verstänglicher weise*

    mit \"TableName\" gehts auch nicht...

    meine idee... das TQuery vieleicht das Falsche Query ist?
    Oder woran kanns liegen



  • Soweit ich das jetzt verstanden habe sollte ich die IBteile nehmen... hm... aber das geht auch noch nicht ganz
    ..
    Das TQuery auf TIBQuery umzustellen ging super ... aber für IB brauche ich scheinbare auch eine Database objekt. und das will noch nicht so wie ich will.

    Im Connection test gehts zwar einwandfrei, (TIBDatabase objekt doppelklick und dann test) aber im programm selber versuche ich das ganze dann zu öffnen Database->Open() ....(stimmt das?)

    Funktioniert aber alles in allem nicht... ich bekomme den fehler : "... EIBClientError with message 'Transaction not assigned'"

    😞



  • Alle Datenbankaktivitäten laufen bei Firebird im Kontext einer Transaktion (TA).
    Man muss deshalb einfach der TIBDatabase Komonente eine TIBTransaction Komponente zuweisen. Diese kann/wird dann von allen anderen TIB Komponenten auch als Transaktion benutzt. Solange keine TA bekannt ist geht nichts 😞 .

    P.S. Nur als Tipp. Die Daten werden erst dann in die DB eingetragen, wenn du die Transaktion bestätigst. (mit dieTransaktion->Commit() oder dieTransaktion->CommitRetaining()). Am besten dazu nochmal in der Hilfe nachlesen 😉


Anmelden zum Antworten