SQLite Einbinden, verstehe nichts ?



  • Hallo, ich möchte für ein Projekt eine Datenbank benutzen das es zum Arbeiten besser zu bedienen ist und die performance sowie die Programmierung besser ist als das abspeichern in txt Datein. Nun habe ich mich hier im Forum durchgelesen und bina auf die SQLite DB gestoßen, welche sich ja als dll einbinden lassen soll. Soweit so gut. Aber nach mittlerweile 5 Stunden habe ich nicht gefunden wie ich diese Ansprechen/Benutzen kann. Habe was von ADO und BDE gelesen was jas chnittstellen zu Datenbanken sein sollen aber direkt zum Thema Borland+Sqllite nichts, leider auch bei Google nicht. Bisher habe ich nur kentnisse in MYSQL was datenbanken angeht aber das sollte ja nicht das Problem sein. Würde mich freuen wenn jemand mal kurz ein paar sätze schreiben könnte wie das funktioniert. Möchte keinen fertigen Code oder so, nur halt mal eine erklärung was ich machen muss um die DB zu benutzen. Hoffe da findet sich hier jemand 🙂



  • Es gibt fertige Komponenten wie die hier:

    http://aducom.com/cen/download.php



  • Super das hat mir sehr geholfen. Habe es nun geschafft das Package zu installieren, und kann die komponenten auch auf eine Form ziehen und Compilieren.

    Leider stellt sich mich jetzt nur die frage wie ich diese benutzen kann, also konkret die funktionen. Leider finde ich auf der HP keine Dokumentation, und im Download ist auch nichts enthalten?

    vielen dank schonmal!



  • Du ziehst einfach eine TASQLiteDB auf deine Form.
    Da musst du dann unter umständen noch den richtigen DLL Namen eingeben (DriverDLL) und dann wählst du deine Datenbank aus (Database).
    Dann noch Connected auf true.
    Dann nimmst du Beispielsweise eine TASQLiteQuery Komponente und stellst bei Connection die TASQLiteDB ein.
    Dann der Rest funktioniert genauso wie gehabt:

    ASQLiteQuery1->Close();
    ASQLiteQuery1->SQL->Clear();
    ASQLiteQuery1->SQL->Add("SELECT * FROM artikel;");
    ASQLiteQuery1->Open();
    

    Zugriff dann Beispielsweise so:

    if(ASQLiteQuery1->RecordCount>0)
       {
          Edit1->Text = ASQLiteQuery1->FieldByName("artikelname")->AsString;
       }
    else 
    {
      //Nichts gefunden
    }
    


  • DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE

    Das hat mir sehr geholfen! 🙂



  • hi...

    Tobias.M schrieb:

    Super das hat mir sehr geholfen. Habe es nun geschafft das Package zu installieren, und kann die komponenten auch auf eine Form ziehen und Compilieren.

    sry aber ich hab das noch nicht verstanden... wie hast du denn sqlite installiert?



  • tize schrieb:

    hi...

    Tobias.M schrieb:

    Super das hat mir sehr geholfen. Habe es nun geschafft das Package zu installieren, und kann die komponenten auch auf eine Form ziehen und Compilieren.

    sry aber ich hab das noch nicht verstanden... wie hast du denn sqlite installiert?

    SQLite hat er nicht installiert.
    Er hat nur die Aducom Komponenten installiert.
    Diese ermöglichen einen Zugriff auf SQLite.



  • tipgeber schrieb:

    Er hat nur die Aducom Komponenten installiert.

    bin noch nich sooo lange in c++ bzw mit dem borland unterwegs...
    was sind aducom komponenten und wie installiert man diese?
    könntest du mir ma bitte genau beschreiben wie ich den borland dazu überede das er erstma deinen bsp code probieren kann.

    das wär echt super 🙂



  • soo ich hab da ma tante google gefragt und siehe da, endlich ma ne ordentliche erklärung:

    http://www.fortunecity.com/boozers/ferret/402/articles/Using_Aducom_SQLite_component.html



  • so, jetzt hab ich aber das nächste problem: 😞

    wenn ich jetzt die TASQLite3DB in meine Form packe, wird ja ein ASQLite3DB1 erstellt. Das selbe mach ich hab ich jetzt auch mit dem TASQLite3Query und dem TASQLite3Table gemacht, die erzeugen ein ASQLite3Query1 und ein ASQLite3Table1.

    so weit so gut...

    wie kann ich jetzt aber eine Datenbankdatei einrichten und Tabellen anlegen und wie kann ich dann Daten rein packen und drauf zu greifen.

    ASQLite3DB1->Connected = true;
    

    - liefert mir nen Error: Missing database property!

    Was mach ich falsch oder was hab ich vergessen?



  • Ja, die Fehlermeldung sagt doch, das du eine Datenbanknamen brauchst.
    Entweder wählst du eine vorhandene aus, oder aber setzt da deinen neuen Datenbanknamen rein.



  • irgendwie werd ich aus deinen tipps nich schlau...

    tipgeber schrieb:

    Entweder wählst du eine vorhandene aus, oder aber setzt da deinen neuen Datenbanknamen rein.

    ... wo find ich denn eine vorhandene datenbank und wo setz ich den namen ein?



  • irgendwie werd ich aus deinen tipps nich schlau...

    tipgeber schrieb:

    Entweder wählst du eine vorhandene aus, oder aber setzt da deinen neuen Datenbanknamen rein.

    ... wo find ich denn eine vorhandene datenbank und wo setz ich den namen ein?



  • Entweder du hast dir mit einem AdministrationsTool wie z.B. SQLiteAdmin schon eine DB "gebaut" und setzt da den Filenamen rein.
    Oder aber du erstellst dir selber eine, indem du deinen 'Wunschnamen' nimmst.
    Das trägst du dann unter der Eigenschaft der ASQLiteDB ein, die mit D... anfängt und mit ...base aufhört. 😉
    Danach connecten und schon hast du einen Draht zu deiner DB.



  • ok danke, ich hab ganz vergessen in den object inspector zu schaunen 😉 wenn ich auf weitere hindernisse stoße meld ich mich wieder...



  • so ich mir jetzt ne db mit SQLite++ erstellt. enthalten sind 2 Tabellen mit je einem Primärschlüssel. Hab Datenbank ausgewählt und auch die dll geladen, die sqlite3.h eingebunden und wenn ich im object inspector connetion auf true stell funzt es auch. wenn ich jetzt aber den button drücke, kommt nen fehler: no database connection!

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    ASQLite3Query1->Close();
    ASQLite3Query1->SQL->Clear();
    ASQLite3Query1->SQL->Add("select * from client;");
    ASQLite3Query1->Open();
    }
    

    warum?



  • Ja, woher soll das Query auch wissen welche ASQLiteDB es benutzen soll?



  • vielen dank, das du mir immer noch weiter hilfst, wenn ich heut zu hasue bin werd ich der sache sofort auf den grund gehen. werd mich ganz sicher wieder melden. 😉 👍



  • soo, das nächste problem ließ natürlich nicht lange auf sich warten:

    ASQLite3Query1->Close();
    ASQLite3Query1->SQL->Clear();
    ASQLite3Query1->SQL->Add("SELECT name FROM client WHERE id = 1;");
    ASQLite3Query1->Open();
    

    verursacht diesen error:

    "malformed database schema - near AUTOINCREMENT"

    meine datenbank hab ich mit SQLite++ erstellt. inhalt sind 2 tabellen. und unter SQLite++ funzen auch meine abfragen.

    was hab ich jetzt wieder nicht beachtet...? 😞



  • ok fehler zwar nicht gefunden aber wenn ich jetzt ne neue db automatisch anlegen lasse funzt es... 🙂

    jetzt hab ich aber noch ne frage was die abfragen angeht:

    mit

    if(ASQLiteQuery1->RecordCount>0)
       {
          Edit1->Text = ASQLiteQuery1->FieldByName("artikelname")->AsString;
       }
    else
    

    bekomm ich ja nur den ersten datensatz vom query.

    wenn ich das jetzt aber anstatt in nen edit feld in ne listbox ausgeben will und es mehr als nur ein datensatz zu meiner abfrage existiert, mit welchem befehl geh ich dann das query datensatz weise durch um alle auszugeben?


Anmelden zum Antworten