sqlite und c++
-
Hallo Leute,
ich habe hier schon einen code von nem user gefunden, mit dem man wohl auf seine sqlite db zugreifen kann und sql befehle senden kann.
#include <iostream> #include <stdlib.h> #include "sqlite.h" #include "sqlite3.h" sqlite *datenbank; // unsere Datenbank using namespace std; /* Die Callback- Funktion gibt uns die Ergebnisse unserer Anfragen zurück: 1ter Parameter: Ist nicht notwendig 2ter Parameter: Anzahl der Spalten im Ergebnis 3ter Parameter: Array von Pointern auf die Strings für die einzelnen Felder 4ter Parameter: Name der Spalte */ int Callback( void *Pointer, int argc, char **argv, char **columnNames) { cout<< *argv <<endl; // Gibt die Einträge der Spalte "eintrag" aus return 0; } int main(int argc, char *argv[]) { datenbank = sqlite_open( "MeineDatenbank" , 0 , NULL); // Tabelle anlegen und füllen: // (Da das nur Anweisungen sind, brauchen wir die Callbackfunktion nicht und lassen den 3ten Parameter auf "NULL") sqlite_exec( datenbank , "create table test(number integer , eintrag varchar(50) , primary key(number));" , NULL , NULL , NULL); sqlite_exec( datenbank , "insert into test (number , eintrag) values (1 , 'Testeintrag');" , NULL , NULL , NULL); sqlite_exec( datenbank , "insert into test (number , eintrag) values (2 , 'Testeintrag 2');" , NULL , NULL , NULL); sqlite_exec( datenbank , "insert into test (number , eintrag) values (3 , 'Testeintrag 3');" , NULL , NULL , NULL); // Anfrage an Datenbank: Wir wollen alle Felder aus der Spalte "eintrag": sqlite_exec( datenbank , "select eintrag from test;" , Callback , NULL , NULL); // Das war`s, wir schließen die Datenbank: sqlite_close(datenbank); system("PAUSE"); return 0; }
Ich weiß nich mehr genau in welchem thread das war. Wie auch immer, ich hab mir die Datei einfach mal gegriffen und versucht damit zu arbeiten, allerdings fehlt mir die sqlite.h und ich finde die einfach nirgendwo. Kann mir die vllt. jemand hochladen? Auf der sqlite homepage finde ich nur ne sqlite3.h aber ich hab jetzt einfach keinen plan mehr welche ich nutzen soll. wenn ich die sqlite3.h einbinde kommen zich fehler.
Brauche hilfe ^^
MfG
mycrypt
-
Hallo
Es dürfte nicht schwer vorzustellen sein das es mehr braucht zum Ansteuern einer Datenbank als eine einfache HEaderdatei. Sondern ein ganzes Packet samt Implementationsdateien oder einer vorkompilierten lib/dll. Und das so ein Packet auch einen Hersteller hat von desen Homepage (erster Treffer bei Google mit "sqlite") man besagtes Packet herunterladen kann.
bis bald
akari
-
Der Autor Deines Codes hat wohl sqlite-Versionen gemischt. Ein Beispiel für die aktuelle Version 3:
#include <cstdlib> #include <iostream> #include <sstream> #include <sqlite/sqlite3.h> void error_exit( sqlite3 *database ) { std::cout << "Error: " << sqlite3_errmsg( database ) << std::endl; sqlite3_close( database ); std::exit( EXIT_FAILURE ); } int main( ) { // create a database in memory only: sqlite3 *database = 0; if( sqlite3_open( ":memory:", &database ) != SQLITE_OK ) { error_exit( database ); } // create a table: if( sqlite3_exec( database, "CREATE TABLE ShoppingList(Number INTEGER PRIMARY KEY, \ Entry VARCHAR(50));", 0, 0, 0 ) != SQLITE_OK ) { error_exit( database ); } // fill it: const char *entries[ ] = { "bread", "milk", "apples" }; for( std::size_t i = 0; i < ( sizeof( entries ) / sizeof( entries[ 0 ] ) ); ++i ) { std::stringstream ss; ss << "INSERT INTO ShoppingList (Entry) values ('" << entries[ i ] << "');"; if( sqlite3_exec( database, ss.str( ).c_str( ), 0, 0, 0 ) != SQLITE_OK ) { error_exit( database ); } } // run a query: char **result = 0; int num_rows = 0, num_cols = 0; if( sqlite3_get_table( database, "select Entry from ShoppingList;", &result, &num_rows, &num_cols, 0 ) != SQLITE_OK ) { error_exit( database ); } for( int row = 1; row <= num_rows; ++row ) { std::cout << result[ row ] << std::endl; } sqlite3_free_table( result ); // close the database: sqlite3_close( database ); return EXIT_SUCCESS; }
Ich unterstelle jetzt einfach, dass du Microsoft Visual C++ benutzt:
- Download sqlitedll-3_5_6.zip und entpacken in Dein Projektverzeichnis.
- Am Visual Studio Command Prompt in Deinem Projektverzeichnis eine Import-Library für sqlite3.dll erstellen:
lib /def:sqlite3.def /name:sqlite3.dll /out:sqlite3.lib
- Download sqlite-amalgamation-3_5_6.zip sqlite2.h nach C:\program files\Microsoft Visual Studio [x]\vc\include\sqlite entpacken.
- Projekteigenschaften -> Konfigurationseigenschaften -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten: sqlite3.lib eintragen.
... und schon hab' ich fertig.
greetz, Swordfish
PS: Obwohl mir die letzte halbe Stunde sowieso langweilig war, muss ich Akari völlig rechtgeben: Ein bisschen mehr Eigeninitiative könnt's schon sein...
-
Auch, wenn das hier absolut nichts zur Sache tut...
Aber zumindest als Programmierer oder wie auch immer sollte man wissen, wie Paket geschrieben wird... Es ist das englische, wo es 'packet' heißt...
</klugscheiß>
sry :p
-
Dieser Thread wurde von Moderator/in HumeSikkins 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.
-
Für SQLite gibt es auch noch den C++ Wrapper: CppSQLite (um das C++ aud dem Titel mal aufzugreifen ;)).
Ich bin damit zur Zeit zufrieden, würde mir aber auch mal SOCI anschauen, da man damit nicht auf eine DB festgelegt ist.