一个简单sqlite3的封装类

前端之家收集整理的这篇文章主要介绍了一个简单sqlite3的封装类前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

/* * author: hjjdebug * date: 2011 * sqlite 数据库,包含4个文件sqlite3.lib sqlite3.dll sqlite3.h sqlite3.def * 用navicat for sqlite 工具观察数据库文件.sqlite 文件 * 我很佩服开源精神。 * 一个简单sqlite的封装类,留个纪念吧 */ #include "sqlite3.h" #include "stdio.h" #define DEBUGLEVEL 0 using namespace std; class DbClip { sqlite3 *db; public: int open(char *filePath) { int ret = sqlite3_open(filePath,&db); return ret; } int create() { char sql[1000] = "create table clips(id integer primary key,start integer,end integer,create_time datetime);"; int ret=sqlite3_exec(db,sql,0); return ret; } int insert(int id,int start,int end) { char sql[1000]; sprintf(sql,"insert into clips values (%d,%d,datetime('now','localtime'));",id,start,end); return sqlite3_exec(db,0); } int queryMaxId() { sqlite3_stmt * stmt; char sql[1000] = "select max(id) from clips;"; sqlite3_prepare(db,-1,&stmt,0); int rc = sqlite3_step(stmt); if(rc==sqlITE_ROW) { int n = sqlite3_column_int(stmt,0); return n; } return -1; } int query(vector<ClipNode> &allNodes,vector <int> &ids) { char sql[512*1024]; char buffer[256]; int n_row=0,n_column=0; char **azResult; //存放结果 sprintf(sql,"select bpts,epts from clips where id in (%d",ids[0]); // sprintf(sql,"select bpts from clips;"); for(unsigned i=1; i<ids.size(); i++) { itoa(ids[i],buffer,10); strcat(sql,","); strcat(sql,buffer); } strcat(sql,");"); sqlite3_get_table(db,&azResult,&n_row,&n_column,NULL); #if (DEBUGLEVEL > 3) //其中nrow为行数,ncolum为列数 printf("/nThe result of querying is : /n"); for(int i=1;i<n_row+1;i++) { for(int j=0;j<n_column;j++) printf("%s ",azResult[i*n_column+j]); printf("/n"); } #endif int index=2; // 跳开开始的一个空元素 ClipNode node; for(int i=0; i<n_row; i++) { node.beginVideoPts =_atoi64(azResult[index]); node.endVideoPts = _atoi64(azResult[index+1]); index+=2; allNodes.push_back(node); } return true; } int close() { return sqlite3_close(db); } };

原文链接:https://www.f2er.com/sqlite/202729.html

猜你在找的Sqlite相关文章