Sqlite的操作(增加,删除,查询,修改)
int OpenDB(sqlite3** db) { int result = sqlite3_open(DBNAME,db); #ifdef DEBUG if(result!=0) { printf("Open DataBase Fail ,Result Code:%d \n",result); } else { printf("Open DataBase Sucess\n"); } #endif return result; } int CloseDB(sqlite3* db) { int result = sqlite3_close(db); #ifdef DEBUG if(result!=0) { printf("Close DataBase fail,ResultCode:%d \n",result); } else { printf("Close DataBase Success\n"); } #endif return result; } 创建表: //创建表操作 void CreateTable() { sqlite3 *db; sqlite3_stmt *stmt = NULL; char * ErrMessage = NULL; const char * Error = NULL; char * str_CreateTable="Create Table Student ( studentID INTEGER,studentName Text,HeadImage Blob)"; //创建表的SQL语句 int rc =0; if(OpenDB(&db)!=SQLITE_OK) { return; } rc = sqlite3_exec(db,str_CreateTable,0,0,&ErrMessage); //执行 if(rc!=SQLITE_OK) { printf("操作数据库失败!ErrorMessge:%s\n",ErrMessage); return; } sqlite3_finalize(stmt); CloseDB(db); } Insert操作 //Insert操作 void InsertOperation(void) { sqlite3 *db; sqlite3_stmt *stmt = NULL; char * ErrMessage = NULL; const char * Error = NULL; char * str_Insert="Insert Into Student ( [studentID] ,[studentName],[HeadImage]) values(1,'Alex',?)"; //SQL语句 int rc =0; if(OpenDB(&db)!=SQLITE_OK) { return; } rc = sqlite3_prepare(db,str_Insert,-1,&stmt,&Error); if(rc!=SQLITE_OK) { printf("准备执行插入语句失败!Result Code:%d \n ErrorMessage:%s",rc,Error); return; } char _headImage[3] = {0x41,0x42,0x43}; sqlite3_bind_blob(stmt,1,&_headImage,3,NULL); //二进制数据 rc = sqlite3_step(stmt); if(rc!=SQLITE_DONE) { printf("插入失败!Result Code:%d ErrorMessage:%s",rc,Error); return; } printf("插入成功!\n"); CloseDB(db); } Update操作: //Insert操作 void InsertOperation(void) { sqlite3 *db; sqlite3_stmt *stmt = NULL; char * ErrMessage = NULL; const char * Error = NULL; char * str_Insert="Insert Into Student ( [studentID] ,[studentName],[HeadImage]) values(1,'Alex',?)"; //SQL语句 int rc =0; if(OpenDB(&db)!=SQLITE_OK) { return; } rc = sqlite3_prepare(db,str_Insert,-1,&stmt,&Error); if(rc!=SQLITE_OK) { printf("准备执行插入语句失败!Result Code:%d \n ErrorMessage:%s",rc,Error); return; } char _headImage[3] = {0x41,0x42,0x43}; sqlite3_bind_blob(stmt,1,&_headImage,3,NULL); //二进制数据 rc = sqlite3_step(stmt); if(rc!=SQLITE_DONE) { printf("插入失败!Result Code:%d ErrorMessage:%s",rc,Error); return; } printf("插入成功!\n"); CloseDB(db); } Delete操作: void DeleteOperation(void) { sqlite3 *db; sqlite3_stmt *stmt = NULL; char * ErrMessage = NULL; const char * Error = NULL; char * str_Update="Delete From Student where [studentID] =1"; //SQL语句 int rc =0; if(OpenDB(&db)!=SQLITE_OK) { return; } rc = sqlite3_prepare(db,str_Update,-1,&stmt,&Error); if(rc!=SQLITE_OK) { printf("准备执行删除语句失败!Result Code:%d \n ErrorMessage:%s",rc,Error); return; } rc = sqlite3_step(stmt); if(rc!=SQLITE_DONE) { printf("删除失败!Result Code:%d ErrorMessage:%s",rc,Error); return; } printf("删除成功!\n"); CloseDB(db); } Select操作: void SelectOperation(void) { sqlite3 *db; sqlite3_stmt *stmt = NULL; char * ErrMessage = NULL; const char * Error = NULL; char * str_Update="select * From Student "; //SQL语句 int rc =0; if(OpenDB(&db)!=SQLITE_OK) { return; } rc = sqlite3_prepare(db,str_Update,-1,&stmt,&Error); if(rc!=SQLITE_OK) { printf("准备执行查询语句失败!Result Code:%d \n ErrorMessage:%s",rc,Error); return; } while(1) { if(sqlite3_step(stmt)!=SQLITE_ROW) { sqlite3_finalize(stmt); break; } int studentid =sqlite3_column_int(stmt,0); const char * studentName = sqlite3_column_text(stmt,1); const void * image = sqlite3_column_blob(stmt,2); printf("studentID is %d ,Name is %s,HeadImage is %s \n",studentid,studentName,image); } CloseDB(db); }
Keep it simple!