一个简单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,0,0);
        return ret;
    }
    int insert(int id, int start, int end)
    {
        char sql[1000];
        sprintf(sql,"insert into clips values (%d, %d, %d, datetime('now','localtime'));", id, start,end);
        return sqlite3_exec(db,sql,0,0,0);
    }
    int queryMaxId()
    {
        sqlite3_stmt * stmt;
        char sql[1000] = "select max(id) from clips;";
        sqlite3_prepare(db,sql,-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,sql,&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);
    }
};

 

你可能感兴趣的:(sql,数据库,sqlite,Integer,buffer,insert)