Qt中sqllite数据库判断一张表是否存在

今天在学习Qt的时候,打算使用Qt中的sqllist做一个小的Daemo,但是第一次在使用数据库的时候需要在代码中创建表,于是需要先判断表是否存在,于是去网上搜了一下,发现网上的案例都是下面这样:

bool IsTableExist(QSqlQuery &query,QString table)
{
   QString sql = QString("select count(*) from sqlite_master where type = 'table' name='%1'").arg(table);
   return query.exec(sql);
}

这种方法查询的是数据库中有没有表的数据,肯定会有结果返回,所以**query.exec(sql)**执行的结果一定是true,只是查询的结果如果没有这张表的话是0,有的话是1。必须把查询的结果拿出来和0做比较,但是网上的方法都没有这样做。

下面是我自己想出来的方法,其实差不多,但是不用取出查询的结果。

bool IsTableExist(QSqlQuery &query,QString table)
{
   QString sql = QString("select * from sqlite_master where name='%1'").arg(table);
   query.exec(sql);
   return query.next();
}
欢迎关注问我团队公众号:

在这里插入图片描述

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在C++判断数据库是否存在有多种方法。其一种方法是通过执行SQL查询语句来判断。根据你提供的引用内容,有两种常用的方法可以实现这个功能。 第一种方法是通过查询数据库的系统sqlite_master来判断是否存在。你可以使用如下的代码来实现: ```cpp bool IsTableExist(QSqlQuery &query, QString table) { QString sql = QString("select count(*) from sqlite_master where type = 'table' and name='%1'").arg(table); return query.exec(sql) && query.next() && query.value(0).toInt() > 0; } ``` 这个方法的原理是通过查询sqlite_master的记录来判断是否存在指定的。如果查询到的结果集不为空且第一列的值大于0,则说明存在。 第二种方法是通过查询指定的记录来判断是否存在。你可以使用如下的代码来实现: ```cpp bool IsTableExist(QSqlQuery &query, QString table) { QString sql = QString("select * from %1").arg(table); query.exec(sql); return query.next(); } ``` 这个方法的原理是通过查询指定的记录来判断是否存在。如果查询到的结果集不为空,则说明存在。 以上两种方法你可以根据自己的需要选择其之一来判断数据库是否存在。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Qtsqllite数据库判断一张是否存在](https://blog.csdn.net/len_yue_mo_fu/article/details/80644595)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值