1、sqlite3_open(const char *filename, sqlite3 **ppDb)
该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。
如果 filename 参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。
如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开。
2、sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)
该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成。
在这里,第一个参数 sqlite3 是打开的数据库对象,sqlite_callback 是一个回调,data 作为其第一个参数,errmsg 将被返回用来获取程序生成的任何错误。
sqlite3_exec() 程序解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止。
3、sqlite3_close(sqlite3*)
该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完成。
如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。
实例一、
1 #include2 #include 3 #include "../Sqlite3/sqlite3.h" 4 using namespace std; 5 6 int callback(void*,int,char**,char**); 7 8 int CreateSQLite(void); 9 10 int main(int argc, char *argv[])11 {12 CreateSQLite();13 14 return 0;15 }16 17 int callback(void *NotUsed, int argc, char **argv, char **azColName)18 {19 int i;20 for(i=0; i
运行结果:
实例二:
1 #include2 #include 3 #include "../Sqlite3/sqlite3.h" 4 5 int callback(void *NotUsed, int argc, char **argv, char **azColName); 6 7 int connect_db(char const *p_db_name); 8 9 int update_db(sqlite3 *p_db); 10 11 int selec_clo_db(sqlite3 *p_db); 12 13 int main(int argc, char *argv[]) 14 { 15 connect_db("mytest.db"); 16 17 return 0; 18 } 19 20 int callback(void *NotUsed, int argc, char **argv, char **azColName) 21 { 22 int i = 0; 23 for (i = 0; i < argc; ++i) 24 { 25 printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL"); 26 } 27 printf("\n"); 28 29 return 0; 30 } 31 32 int connect_db(char const *p_db_name) 33 { 34 int rec = 0; 35 sqlite3 *p_db = NULL; 36 char *p_err_msg = NULL; 37 char *p_sql = "SELECT * FROM PERSON;"; 38 39 if (NULL == p_db_name) 40 { 41 printf("DB Name is NULL \n"); 42 return -1; 43 } 44 45 rec = sqlite3_open(p_db_name, &p_db); 46 if (SQLITE_OK != rec) 47 { 48 fprintf(stdin, "sqlite3_open func err : %s\n", sqlite3_errmsg(p_db)); 49 return rec; 50 } 51 52 rec = sqlite3_exec(p_db, p_sql, callback, 0, &p_err_msg); 53 if (SQLITE_OK != rec) 54 { 55 printf("sqlite3_exec function err : %s\n", p_err_msg); 56 sqlite3_free(p_err_msg); 57 sqlite3_close(p_db); 58 return rec; 59 } 60 61 62 63 rec = update_db(p_db); 64 if (0 != rec) 65 { 66 fprintf(stdin, "update_db function err\n"); 67 } 68 69 return rec; 70 } 71 72 int update_db(sqlite3 *p_db) 73 { 74 int rec = 0; 75 char *p_sql = "UPDATE PERSON SET NAME = 'KING' WHERE ID = 2;"; 76 char *p_err_msg = NULL; 77 78 if (NULL == p_db) 79 { 80 printf("update_db func p_db is NULL\n"); 81 return -1; 82 } 83 84 rec = sqlite3_exec(p_db, p_sql, NULL, 0, &p_err_msg); 85 if (SQLITE_OK != rec) 86 { 87 printf("update_db sqlite3_exec func err : %s\n", p_err_msg); 88 sqlite3_free(p_err_msg); 89 sqlite3_close(p_db); 90 return rec; 91 } 92 93 printf("修改之后 !\n"); 94 rec = selec_clo_db(p_db); 95 if (0 != rec) 96 { 97 printf("select_clo_db func err \n"); 98 } 99 100 return rec;101 }102 103 int selec_clo_db(sqlite3 *p_db)104 {105 int rec = 0;106 char *p_sql = "SELECT * FROM PERSON;";107 char *p_err_msg = NULL;108 109 rec = sqlite3_exec(p_db, p_sql, callback, 0, &p_err_msg);110 if (SQLITE_OK != rec)111 {112 printf("selec_clo_db sqlite3_exec func err :%s\n", p_err_msg);113 sqlite3_free(p_err_msg);114 }115 116 sqlite3_close(p_db);117 118 return rec;119 }
运行结果: