加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

sqlite3 判断数据库和表的状态

发布时间:2020-12-12 20:06:35 所属栏目:百科 来源:网络整理
导读:1、判断数据库是否存在,如果存在rc!=0 否则==0 ,同时数据库不存在的话也不会创建caen.db3,此处与sqlite3_open不用! =》rc = sqlite3_open_v2("caen.db3",db,SQLITE_OPEN_READWRITE,NULL); 2、判断数据库中某个表的存在,如果sql执行成功zErrMsg=NULL,否则
 1、判断数据库是否存在,如果存在rc!=0 否则==0 ,同时数据库不存在的话也不会创建caen.db3,此处与sqlite3_open不用! =》rc = sqlite3_open_v2("caen.db3",&db,SQLITE_OPEN_READWRITE,NULL); 
 

2、判断数据库中某个表的存在,如果sql执行成功zErrMsg=NULL,否则给出错误信息:no sucn table:表名

[java] view plain copy print ?
  1. char*zErrMsg;
  2. char*sqls="SELECT*FROMBaseInfo";
  3. char*datatable;
  4. intnRow;
  5. intnColumn;
  6. /**判断有没有这张表**/
  7. if(sqlite3_get_table(db,sqls,&datatable,&nRow,&nColumn,&zErrMsg)!=NULL){

sqlite3_get_table使用举例

void GetTable() { sqlite3 * db; int result; char * errmsg = NULL; char **dbResult; //是 char ** 类型,两个*号 int nRow,nColumn; int i,j; int index; result = sqlite3_open( “c:Dcg_database.db”,&db ); if( result != SQLITE_OK ) { //数据库打开失败 return -1; } //数据库操作代码 //假设前面已经创建了 MyTable_1 表 //开始查询,传入的 dbResult 已经是 char **,这里又加了一个 & 取地址符,传递进去的就成了 char *** result = sqlite3_get_table( db,“select * from MyTable_1”,&dbResult,&errmsg ); if( SQLITE_OK == result ) { //查询成功 index = nColumn; //前面说过 dbResult 前面第一行数据是字段名称,从 nColumn 索引开始才是真正的数据 printf( “查到%d条记录n”,nRow ); for( i = 0; i < nRow ; i ) { printf( “第 %d 条记录n”,i 1 ); for( j = 0 ; j < nColumn; j ) { printf( “字段名:%s ?> 字段值:%sn”,dbResult[j],dbResult [index] ); index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示 } printf( “-------n” ); } } //到这里,不论数据库查询是否成功,都释放 char** 查询结果,使用 sqlite 提供的功能来释放 sqlite3_free_table( dbResult ); //关闭数据库 sqlite3_close( db ); return 0; } }*/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读