sqlite3入门之sqlite3_open,sqlite3_exec,slite3_close

时间:2021-10-05 18:52:17

sqlite3_open

  • sqlite3_open函数原型:
  • int sqlite3_open(
    const char *filename, /* Database filename (UTF-8) */
    sqlite3 **ppDb /* OUT: SQLite db handle */
    );
  • sqlite3_open用于连接打开一个数据库,如果这个数据库不存在,则会在指定的路径下创建一个数据库文件,并打开文件;
  • void main(void) {
    ...... sqlite3 *db;
    char *zErrMsg = ;
    int rc; rc = sqlite3_open("testDB1.db", &db);
    if(rc){
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    exit();
    } else {
    fprintf(stderr, "Opened database successfully\n");
    }
    ......
    }

sqlite3_exec

  • sqlite3_exec函数原型:
  • int sqlite3_exec(
    sqlite3, /* An open database */
    const char *sql, /* SQL to be evaluated */
    int (*callback)(void*,int,char**,char**), /* Callback function */
    void *, /* 1st argument to callback */
    char **errmsg /* Error msg written here */
    );
  • sqlite3_exec用于执行一条sql语句,参数如下:
  • 参数1:打开数据库得到的指针;
  • 参数2:一条sql语句,是一个以“\0”结尾的字符串;
  • 参数3:用户提供的回调函数,如果不需要回调函数,可以填 NULL。比如做insert 操作,做delete操作,就没有必要使用回调。而当你做select 时,就要使用回调;
  • 参数4:回调函数需要传递的参数,如果不需要,可以填 NULL;
  • 参数5:错误信息
  • 不使用回调示例:
  • void main(void){
    ......
    sql = "INSERT INTO COMPANY VALUES (1, 'Paul', 32, 'California', 20000.00 ); "
    sqlite3_exec(db, sql, , , &zErrMsg); .....
    }
  • 回调示例:
  • static int callback(void *NotUsed, int argc, char **argv, char **azColName){
    int i;
    for(i=; i<argc; i++){
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");
    return ;
    } void main(void){
    ...... /* Create SQL statement */
    sql = "SELECT * from COMPANY"; /* Execute SQL statement */
    rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
    if( rc != SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
    sqlite3_free(zErrMsg);
    }else{
    fprintf(stdout, "Operation done successfully\n");
    } ......
    }

sqlite3_close

  • sqlite3_close函数原型:

  • int sqlite3_close(sqlite3*);  
  • sqlite3_close用于在操作完数据库之后,关闭数据库;