2010-10-18 7 views

Répondre

8
+1

Merci. Je n'ai pas remarqué ce tutoriel QuickStart lors de la navigation sur les sites sqlite moi-même. Regarde exactement ce que j'ai besoin: Des instructions simples comment démarrer avec SQLite et rien de jargon avancé encore :) – zaplec

+5

Bienvenue dans Stack Overflow! Préférez inclure la source réelle dans le corps de la réponse à la place, au lieu de liens. – Jonny

+1

Veuillez envisager d'ajouter plus de détails à cette réponse. – NathanOliver

8

Que diriez-vous du 'An Introduction to Sqlite C/C++ Interface', et il y a un tout exemple C here on CodeProject.

Ceci est bits du plus échantillon complet,

#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

Un exemple à l'aide de lecture sqlite:

#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

Il s'agit d'un désordre complet de mauvais formatage, mauvais ordre, variables inutilisées, temporaires inutiles, nouvelles lignes manquantes, et plus encore. J'ai commencé à le réparer mais j'ai réalisé que ce n'était pas ma responsabilité. Je conseille aux lecteurs débutants de ne pas s'inspirer de ce code. En outre, je présume que c'était les lecteurs débutants qui ont été upvoting ceci, auquel cas, vous ne devriez pas. –

0

Une façon de le faire sans ajouter d'autres fonctionnalités

#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; 
} 
Questions connexes