Suche Datenbanksystem
-
Naja wenn ich z.B. ein kleines Addressbuch schreibe ist so ein Tabellen-Datenbank System schon schöner. Benutze ich bei PHP-Scripten auch immer.
Ich gehe nun davon aus, dass es nicht so einfach ist, sein kleines c++ Programm einfach mal eben so mit einer .db zu verbinden und die auszulesen?
Hätte jetzt eigentlich gedacht ich binde einfach nur ne bestimmte .h ein, benutze eine Funktion(".../mydata.db") und kann die halt mit weiteren funktionen auswerten oder wie bei php direkt SQL Code durch Query oder so benutzen.
Aber anscheinend ist es bei c++ komplizierter. Hab nach paar Beispiele gegoogelt und da kommen immer seitenlange Quelltexte raus. Schade.
Bin ich auf den falschen Seiten gelandet oder ist es wirklich so?
-
Es ist schon etwas komplizierter als in PHP, aber seitenlanger Quelltext ist übertrieben. Vermutlich kann dir ein C++ Wrapper einiges an Schreibarbeit abnehmen, bei mir ist das Auslesen einer Tabelle aus einer SQLite3 Datenbank nur ein paar Zeilen lang (und wirklich nur ein paar... um die 10).
Edit: Benutze den CppSQLite3 Wrapper
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Datenbanken verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
das Auslesen einer Tabelle aus einer SQLite3 Datenbank nur ein paar Zeilen lang (und wirklich nur ein paar... um die 10).
Ob du so nett wärest und diesen "kleinen" Code mal zeigen könntest. Dann hab ich zumindest einen Anfang.
-
Sicher doch
SQLite3DB Database; Database.open( "c:/database.db" ); SQLite3Query Query = Database.execQuery( "SELECT * FROM tbl_layout" ); if( false == Query.eof() ) { Layout->LayoutType = static_cast<TLayout::LayoutType_t>( Query.getIntField( "type" ) ); Layout->LayoutName = Query.getStringField( "name" ); Layout->MajorVersion = Query.getIntField( "major_version" ); Layout->MinorVersion = Query.getIntField( "minor_version" ); }
Ist jetzt zwar völlig aus dem Kontext gerissen, aber dürfte etwas helfen. Der Schnipsel liest genau einen Datensatz aus einer Tabelle, wenn du mehrere Datensätze lesen willst musst du halt die if-Klausel durch eine while-Klausel ersetzen und nach Behandlung des aktuellen Datensatzes mit SQLite3Query::nextRow() zum nächsten Datensatz springen:
SQLite3DB Database; Database.open( "c:/database.db" ); SQLite3Query Query = Database.execQuery( "SELECT * FROM tbl_layout" ); while( false == Query.eof() ) { // Datensatz behandeln ... Query.nextRow(); }
-
DocShoe schrieb:
Sicher doch
SQLite3DB Database; Database.open( "c:/database.db" ); SQLite3Query Query = Database.execQuery( "SELECT * FROM tbl_layout" ); if( false == Query.eof() ) { Layout->LayoutType = static_cast<TLayout::LayoutType_t>( Query.getIntField( "type" ) ); Layout->LayoutName = Query.getStringField( "name" ); Layout->MajorVersion = Query.getIntField( "major_version" ); Layout->MinorVersion = Query.getIntField( "minor_version" ); }
Ist jetzt zwar völlig aus dem Kontext gerissen, aber dürfte etwas helfen. Der Schnipsel liest genau einen Datensatz aus einer Tabelle, wenn du mehrere Datensätze lesen willst musst du halt die if-Klausel durch eine while-Klausel ersetzen und nach Behandlung des aktuellen Datensatzes mit SQLite3Query::nextRow() zum nächsten Datensatz springen:
SQLite3DB Database; Database.open( "c:/database.db" ); SQLite3Query Query = Database.execQuery( "SELECT * FROM tbl_layout" ); while( false == Query.eof() ) { // Datensatz behandeln ... Query.nextRow(); }
Cool danke.
Das sieht doch schonmal gut aus.Was für eine lib also .h muss ich fürs SQLDB einbinden?
-
Achja und hast du Database und layout gar nicht deklariert?
-
Klaudii schrieb:
Achja und hast du Database und layout gar nicht deklariert?
Oh, jetzt wo du´s sagst fällt´s mir auch auf. Und ich suche seit einigen Monaten den Fehler, warum das Projekt nicht kompiliert.
-
Klaudii: Jetzt mal ganz im Ernst: Lies gefälligst Doku und komm erst dann wieder. Niemand wird Dir hier alles vorkauen, sorry.
-
Die Dokus die ich bisher gegooglet habe, sprengen enorm den Rahmen und sind zu umfangreich.
Kannst du mir denn ein gutes Tutorials, was sich größteiles nur auf das Connecten + Ein- und Auslesen einer SQLite Datenbank in C++ beschränkt? Wäre super wenns auf deutsch wäre. Kann zwar auch englisch aber in der Muttersprache ist es ja immer ein wenig angenehmer
-
In der Zeit, die Du hier mit Versuchen, andere Leute Deine Arbeit machen zu lassen, verbracht hast, hättest Du schon längst jedes Tutorial durch.
Ich mag solche Verweise sonst ja nicht, aber: Hier, bitte.
-
Ok aber wenn ich dort den Beispiel code durchgehe und ihn ausprobiere kommt bei mir immer:
'exit': identifier not found
Dabei habe ich die sqlite3.h doch eingebunden?!
Jemand eine idee?
-