的创建数据库的demon,备有详细注释; /*************************************** **demon:创建数据库 author:乐乐 ********************************……
/*************************************** **demon:创建数据库 author:乐乐 ****************************************/ #include <stdio.h> #include <sqlite3.h> #define DB_PATH "./student.db" //数据库创建路径 /***************************sql 语句定义 start**********************************/ #define CREATE_TABLE "CREATE TABLE IF NOT EXISTS student( " "student_number INTEGER DEFAULT 1," "name TEXT DEFAULT NULL," "sex TEXT DEFAULT NULL" ");" /***************************sql 语句定义 end***********************************/ static sqlite3 *db; //初始化表 void init_tab(sqlite3 *db) { int res,err=-1; sqlite3_stmt *stmt = NULL; if (NULL == db) { printf("param error "); } //1.执行sql select语句 res = sqlite3_prepare_v2(db, CREATE_TABLE, -1, &stmt, NULL); if (res != SQLITE_OK) { goto out_err; } //2.遍历select执行的返回结果 res = sqlite3_step(stmt); //SQLITE_DONE == res | sqlite3_step() has finished executing if (SQLITE_DONE == res) { err = 0; } out_err: //3.销毁前面被sqlite3_prepare创建的准备语句 //【每个准备语句都必须使用这个函数去销毁以防止内存泄露】 sqlite3_finalize(stmt); if (err < 0) { printf("%s ", sqlite3_errmsg(db));//打印错误信息 } return ; } /************************* *1.初始化数据库 *参数:数据库的路径 *return 0成功 **************************/ int sqlite_init(const char *path) { int res; if(NULL == path)//防止传入参数为空 { printf("param error "); return -1; } res = sqlite3_initialize();//初始化,成功返回SQLITE_OK if (res != SQLITE_OK) { printf("sqlite3_initialize error "); return -1; } //打开数据库,(存在打开,不存在创建)成功返回1 res = sqlite3_open(path, &db); if (res) { printf("cannot open database error "); return -1; } //初始化表 init_tab(db); return 0; } int main() { sqlite_init(DB_PATH); return 0; }
二、编译链接过程
打开数据库-可以看到创建的三个表头已经存在
【推荐大家下载sqlite expert方便直观查看数据库】
还没有评论呢,快来抢沙发~