Today's Question:  What are you most afraid of as a programmer?        GIVE A SHOUT

Technical Article => Database =>  Database

SQLite C/C++ function interfaces

  Peter      2012-07-04 12:23:43      2,241    0    0

Some simple introduction to the SQLite function interfaces. First let's check some error codes defined in SQLite3 (They are in SQLite3.h file in the SQLite installation).

#define SQLITE_OK           0   /* Successful result */ 
/* beginning-of-error-codes */ 
#define SQLITE_ERROR        1   /* SQL error or missing database */ 
#define SQLITE_INTERNAL     2   /* Internal logic error in SQLite */ 
#define SQLITE_PERM         3   /* Access permission denied */ 
#define SQLITE_ABORT        4   /* Callback routine requested an abort */ 
#define SQLITE_BUSY         5   /* The database file is locked */ 
#define SQLITE_LOCKED       6   /* A table in the database is locked */ 
#define SQLITE_NOMEM        7   /* A malloc() failed */ 
#define SQLITE_READONLY     8   /* Attempt to write a readonly database */ 
#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite3_interrupt()*/ 
#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */ 
#define SQLITE_CORRUPT     11   /* The database disk image is malformed */ 
#define SQLITE_NOTFOUND    12   /* Unknown opcode in sqlite3_file_control() */ 
#define SQLITE_FULL        13   /* Insertion failed because database is full */ 
#define SQLITE_CANTOPEN    14   /* Unable to open the database file */ 
#define SQLITE_PROTOCOL    15   /* Database lock protocol error */ 
#define SQLITE_EMPTY       16   /* Database is empty */ 
#define SQLITE_SCHEMA      17   /* The database schema changed */ 
#define SQLITE_TOOBIG      18   /* String or BLOB exceeds size limit */ 
#define SQLITE_CONSTRAINT  19   /* Abort due to constraint violation */ 
#define SQLITE_MISMATCH    20   /* Data type mismatch */ 
#define SQLITE_MISUSE      21   /* Library used incorrectly */ 
#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */ 
#define SQLITE_AUTH        23   /* Authorization denied */ 
#define SQLITE_FORMAT      24   /* Auxiliary database format error */ 
#define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of range */ 
#define SQLITE_NOTADB      26   /* File opened that is not a database file */ 
#define SQLITE_ROW         100  /* sqlite3_step() has another row ready */ 
#define SQLITE_DONE        101  /* sqlite3_step() has finished executing */

Some frequently used functions:

1. int sqlite3_open(const char *filename, sqlite3 **ppDb);

This function is to open the database if it exists or create a new database if it doesn't exist.

2. int sqlite3_open16(const void*, sqlite3**);

Use UTF-16 encoding to process the database file name, otherwise it will process the database file name with UTF-8 encoding.

3. int sqlite3_close(sqlite3*);

Close database

4. int sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void*, char**);

Database query operation, the second parameter is the query to be executed.

One simple example:

#include <stdio.h> 
#include <stdlib.h> 
#include <sqlite3.h> 
int  main (int argc, char ** argv) 

    int result = 0; 
    sqlite3* db = NULL; 
    char * errMsg = NULL; 
    char sql_cmd[200]; 
    memset(sql_cmd, 0x00, sizeof(sql_cmd)); 
 
    result = sqlite3_open("lester.db", &db); 
    printf("Hello Lesterk, result = %d\n", result);  
 
    char* sqlCreate = "create table LesterData2 (LesterId INTEGER, LesterName Integer);"; 
    result = sqlite3_exec(db, sqlCreate, 0, 0, &errMsg); 
    printf("Create_Result = %d , Msg = %s \n", result, errMsg); 
     
    char* sqlInsert = "INSERT INTO \"LesterData2\" VALUES( 1, 2);"; 
    result = sqlite3_exec(db, sqlInsert, 0, 0, &errMsg); 
    printf("Insert_Result = %d , Msg = %s \n", result, errMsg); 
     
    char* sql = "SELECT * FROM  LesterData2"; 
    int nrow = 1, ncolumn = 1; 
    char **azResult; 
    result = sqlite3_get_table( db, sql, &azResult, &nrow, &ncolumn, &errMsg); 
    printf("Select_Result = %d , Msg = %s \n", result, errMsg); 
     
    int i = 0; 
    printf( "row = %d,  column=%d \n" , nrow , ncolumn ); 
    printf( "\nThe result of querying is : \n" ); 
     
    for( i = 0; i < ( nrow + 1 ) * ncolumn ; i++){ 
         printf( "azResult[%d] = %s\n", i , azResult[i] ); 
    } 
     
    sqlite3_free_table( azResult ); 
 
    printf("Hello World\n, %d", result); 
    sqlite3_close(db); 
    return 0; 


Reference : http://linger-yan.iteye.com/blog/1576254

SQLITE FUNCTION INTERFACE C/C++

  SAVE AS PDF   MARK AS READ   MARK AS IMPORTANT

Share on Facebook  Share on Twitter  Share on Google+  Share on Weibo  Share on Reddit  Share on Digg  Share on Tumblr    Delicious

  RELATED


  0 COMMENT


No comment for this article.


  WRITE ARTICLE

RUBY, how fast can you run?

By sonic0002
Will this RUBY car perform better than a PYTHON car if there is any? Is the boss of this car manufacturer a Ruby programmer before?   Great thanks to the image author Sina Weibo user @yutopipp for his authorization