2010-10-18 7 views

Antwort

8
+1

Dank. Ich habe das QuickStart-Tutorial nicht bemerkt, als ich selbst die sqlite-Seiten durchstöberte. Sieht genau das aus, was ich brauche: Einfache Anweisungen, wie man mit SQLite anfängt und noch nichts fortgeschrittenes Jargon :) – zaplec

+5

Willkommen bei Stack Overflow! Lieber lieber die tatsächliche Quelle in den Antworttext anstelle von Links einfügen. – Jonny

+1

Bitte denken Sie darüber nach, dieser Antwort einige Details hinzuzufügen. – NathanOliver

8

Wie über die 'An Introduction to Sqlite C/C++ Interface', und es gibt eine ganze C++ Beispiel ist here on CodeProject.

Diese Bits der mehr Voll Probe ist,

#include "CppSQLite.h" 
#include <ctime> 
#include <iostream> 
using namespace std; 
const char* gszFile = "C:\\test.db"; 

int main(int argc, char** argv) 
{ 
    try 
    { 
     int i, fld; 
     time_t tmStart, tmEnd; 
     CppSQLiteDB db; 

     cout << "SQLite Version: " << db.SQLiteVersion() << endl; 

     db.open(gszFile); 
     cout << db.execScalar("select count(*) from emp;") 
       << " rows in emp table in "; 
     db.Close(); 
    } 
    catch (CppSQLiteException& e) 
    { 
     cerr << e.errorCode() << ":" << e.errorMessage() << endl; 
    } 
} 
6

Ein Beispiel unter Verwendung von SQLite-Lese:

#include <stdio.h> 
#include <sqlite3.h> 
#include <string.h> 


int main(int argc, char** argv) 
{ 
    const char*   username = "satyam"; 
    char     q[999]; 
    sqlite3*    db; 
    sqlite3_stmt*  stmt; 
    int     row = 0; 
    int     bytes; 
    const unsigned char* text; 

    if (2 == argc) { 
     username = argv[1]; 
    } 

    q[sizeof q - 1] = '\0'; 
    snprintf(
     q, 
     sizeof q - 1, 
     "SELECT ipaddr FROM items WHERE username = '%s'", 
     username 
    ); 

    if (sqlite3_open ("test.db", &db) != SQLITE_OK) { 
     fprintf(stderr, "Error opening database.\n"); 
     return 2; 
    } 

    printf("Query: %s\n", q); 

    sqlite3_prepare(db, q, sizeof q, &stmt, NULL); 

    bool done = false; 
    while (!done) { 
     printf("In select while\n"); 
     switch (sqlite3_step (stmt)) { 
     case SQLITE_ROW: 
      bytes = sqlite3_column_bytes(stmt, 0); 
      text = sqlite3_column_text(stmt, 1); 
      printf ("count %d: %s (%d bytes)\n", row, text, bytes); 
      row++; 
      break; 

     case SQLITE_DONE: 
      done = true; 
      break; 

     default: 
      fprintf(stderr, "Failed.\n"); 
      return 1; 
     } 
    } 

    sqlite3_finalize(stmt); 

    return 0; 
} 
+0

Dies ist ein komplettes Durcheinander von schlechter Formatierung, schlechter Reihenfolge, ungenutzten Variablen, sinnlosen Provisorien, fehlenden Zeilenumbrüchen und vielem mehr. Ich fing an, es zu reparieren, aber dann erkannte ich, dass das nicht meine Verantwortung ist. Ich würde Newbie-Lesern raten, sich von diesem Code nicht zu inspirieren. Außerdem nehme ich an, dass es Neuling-Leser waren, die das auffrischten, in diesem Fall sollten Sie nicht. –

0

Eine Möglichkeit, es ohne weitere Wrapper zu tun

#include <stdio.h> 
#include <string> 
using std::string; 
#include <sstream> 
using std::stringstream; 

#include "sqlite3.h" 

bool find_employee(int _id) 
{ 
    bool found = false; 
    sqlite3* db; 
    sqlite3_stmt* stmt; 
    stringstream ss; 

    // create sql statement string 
    // if _id is not 0, search for id, otherwise print all IDs 
    // this can also be achieved with the default sqlite3_bind* utilities 
    if(_id) { ss << "select * from employees where id = " << _id << ";"; } 
    else { ss << "select * from employees;"; } 
    string sql(ss.str()); 

    //the resulting sql statement 
    printf("sql: %s\n", sql.c_str()); 

    //get link to database object 
    if(sqlite3_open("data/test.db", &db) != SQLITE_OK) { 
     printf("ERROR: can't open database: %s\n", sqlite3_errmsg(db)); 
     sqlite3_close(db); 
     return found; 
    } 

    // compile sql statement to binary 
    if(sqlite3_prepare_v2(db, sql.c_str(), -1, &stmt, NULL) != SQLITE_OK) { 
     printf("ERROR: while compiling sql: %s\n", sqlite3_errmsg(db)); 
     sqlite3_close(db); 
     sqlite3_finalize(stmt); 
     return found; 
    } 

    // execute sql statement, and while there are rows returned, print ID 
    int ret_code = 0; 
    while((ret_code = sqlite3_step(stmt)) == SQLITE_ROW) { 
     printf("TEST: ID = %d\n", sqlite3_column_int(stmt, 0)); 
     found = true; 
    } 
    if(ret_code != SQLITE_DONE) { 
     //this error handling could be done better, but it works 
     printf("ERROR: while performing sql: %s\n", sqlite3_errmsg(db)); 
     printf("ret_code = %d\n", ret_code); 
    } 

    printf("entry %s\n", found ? "found" : "not found"); 

    //release resources 
    sqlite3_finalize(stmt); 
    sqlite3_close(db); 

    return found; 
} 
Verwandte Themen