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 = 0; int rc; rc = sqlite3_open("testDB1.db", &db); if(rc){ fprintf(stderr, "Can't open database: %s ", sqlite3_errmsg(db)); exit(0); } else { fprintf(stderr, "Opened database successfully "); }
......
}
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语句,是一个以“ ”结尾的字符串;
- 参数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, 0, 0, &zErrMsg); ..... }
- 回调示例:
-
static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i<argc; i++){ printf("%s = %s ", azColName[i], argv[i] ? argv[i] : "NULL"); } printf(" "); return 0; } 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 ", zErrMsg); sqlite3_free(zErrMsg); }else{ fprintf(stdout, "Operation done successfully "); } ...... }
sqlite3_close
-
sqlite3_close函数原型:
-
int sqlite3_close(sqlite3*);
- sqlite3_close用于在操作完数据库之后,关闭数据库;