您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

sqlite数据库基本操作

2025/10/14 22:52:54发布11次查看
//插入及更新操作 int nret = 0; sqlite3 * db = null; cstring strfilepath; //数据库存储路径 //路径赋值(省略) //连接数据库 nret = sqlite3_open16(strfilepath, db); //有几个打开函数可供调用,使用wchar类型路径用这个 if(nret != sqlite_ok) { log
//插入及更新操作
 int nret = 0;
 sqlite3 * db = null;
 cstring strfilepath;  //数据库存储路径
//路径赋值(省略)
//连接数据库
 nret = sqlite3_open16(strfilepath, &db);    //有几个打开函数可供调用,使用wchar类型路径用这个
 if(nret != sqlite_ok)
 {
 logd(_q_d,l数据库打开失败);
 return -4;
 }
cstring strsqlsentence;
char *szsqlsentence = null;
组织sql语句
**********************
 {
  //更新操作
  strsqlsentence.format(lupdate tbl_ad set ad_title='%s', ad_info='%s', begin_time='%s', end_time='%s' where ad_id='%s';, stradtitle, stradinfo, stradbegintime, stradendtime, stradid);
 }
{
  //插入操作
  strsqlsentence.format(linsert into tbl_advertisement values('%s','%s','%s','%s','%s');, stradid, stradtitle, stradinfo, stradbegintime, stradendtime);
 }
**********************
//将sql语句转换成sqlite函数能执行的utf8格式
  nlen = 0;
  nlen = widechartomultibyte(cp_utf8, 0, strsqlsentence, -1, null, 0, null, 0);
  szsqlsentence = new char[nlen+1];
  if (szsqlsentence == null)
  {
   return -6;
  }
  memset(szsqlsentence, 0, nlen+1);
  widechartomultibyte(cp_utf8, 0, strsqlsentence, -1, szsqlsentence, nlen+1, null, 0);
//锁定数据库
  if(sqlitelock(lterminalplat.db,30*1000) == 0)    //sqlitelock为自写的一套锁机制中的函数
  {
   // 准备执行sql
   nret = sqlite3_exec( db, begin;, 0, 0, 0);
   if(nret == sqlite_ok)
   {
    bool bsuccess = true;
    char * perrmsg = null;
    // 执行sql
    nret = sqlite3_exec( db, szsqlsentence, 0, 0, &perrmsg);
    if(nret != sqlite_ok)
    {
     logbd(_q_d,sql执行失败 [%s],perrmsg);
     bsuccess = false;
    }
    else
    {
     logbd(_q_d,sql执行成功);
    }
if(bsuccess)
    {
     //提交
     sqlite3_exec( db, commit;, 0, 0, 0);
    }
    else
    {
     //回滚
     sqlite3_exec( db, rollback;, 0, 0, 0);
     hreturnvale = -7;
    }
   }
   //解锁
   sqliteunlock(lterminalplat.db); 
  }
  else
  {
   hreturnvale = -8;
  }
  // 关闭数据库
  sqlite3_close(db);
return hreturnvale ;
************************************分割线************************************
//查询操作
//说明sqlite3_exec可以让数据库直接执行sql语句,查询也不例外,但是如果是查询语句,需要定义一个回调函数来解析查询结果。
//在此,用的是sqlite3_get_table这一套函数,我访问的是本地数据库,还算稳定
//组织查询语句
 cstring strsqlsentence;
 strsqlsentence.format(lselect * from tbl_advertisement where 1=1 and  ad_id='%s';, stradid);
char szsqlsentence[1024];
 int nlen = 0;
 memset(szsqlsentence, 0, sizeof(szsqlsentence));
 nlen = widechartomultibyte(cp_utf8, 0, strsqlsentence, -1, null, 0, null, 0);
 widechartomultibyte(cp_utf8, 0, strsqlsentence, -1, szsqlsentence, nlen+1, null, 0);
int result;
 hresult hreturn = 0;
 char * errmsg = null;
 char **dbresult = null;
 int nrow, ncolumn;
 int index=0;
 //数据库查询
 cstring strtemp;
 result = sqlite3_get_table( db, szsqlsentence, &dbresult, &nrow, &ncolumn, &errmsg );
 if( (sqlite_ok == result))
 {
  if (nrow >= 1)
  {
   //查询成功,有记录
   hreturn = 1;
  }
  else
  {
//无符合条件的结果
   hreturn = 0;
  }
 }
 else
 {
//查询失败
  logd(_q_d, l判断本地数据库中是否存在该广告--[查询失败],errmsg=%s  result=%d, nrow=%s, ncolumn=%s, cstring(errmsg), result, nrow, ncolumn);
  hreturn = -1;
 }
 //释放查询结果
 sqlite3_free_table( dbresult );  //注意一定要调用该函数对释放结果集
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product