找回密码
 立即注册
收起左侧

没有sqlite数据库文件却提示打开成功

4
回复
6858
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2014-6-29 12:31:35 显示全部楼层 |阅读模式
1Qter豆
我用sqliteman建了个文件,里面有4张表,每张表都非空,如下图。


我在程序启动时打开这个这个数据库,并获取里面的所有表的名字,并显示在ComboBox控件上。
部分代码如下:
  1. if (connect("mcu_list.db"))
  2. {
  3.     QSqlDatabase db;
  4.     QStringList strList;

  5.     strList = db.tables();
  6.     ui->cb_mcuTypy->addItems(strList);
  7. }
复制代码
连接函数的带如下:
  1. bool MainWindow::connect(const QString &dbName)
  2. {
  3.     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");

  4.     db.setDatabaseName(dbName);
  5.         if (false == db.open())
  6.         {
  7.             QMessageBox::critical(0, QObject::tr("Database Error"),
  8.             db.lastError().text());
  9.             return false;
  10.         }

  11.         return true;
  12. }
复制代码
我把建立好的mcu_list.db文件放在项目的debug文件夹下,程序编译通过,程序运行不报错,但是ComboBox控件上无内容。debug发现db.tables()没有获取到任何表的信息。既然都连上了,应该有点信息返回的。接着我把debug目录下的mcu_list.db文件删除,程序竟然不报错,文件都没了,还能连得上么?到底哪里出了问题啊,求解释。




附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

sqlite是会被自动生成的
回复

使用道具 举报

尚未签到

2014-6-29 12:31:36 显示全部楼层
sqlite是会被自动生成的
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2014-6-29 18:44:40 显示全部楼层
Joey_Chan 发表于 2014-6-29 18:27
sqlite是会被自动生成的

我说怎么看见文件夹下有个同名的数据库文件,还是0KB的。那不能打开我自己的吗?因为我只需要做查询
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2014-6-29 21:09:07 显示全部楼层
最新进展,是可以连上并打开自己建的数据库文件,如下图,我选定输出某张表里的部分数据,是可以的


如此一来,就是没办法获取到数据库里所有表的名字这个问题了。而之前说的没有文件也能打开就如楼上所说,会自己生成。还是难解啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:6 天
连续签到:1 天
2014-7-1 00:48:09 显示全部楼层
木易不是杨 发表于 2014-6-29 21:09
最新进展,是可以连上并打开自己建的数据库文件,如下图,我选定输出某张表里的部分数据,是可以的

sqlite数据库文件不存在时是会自动生成的。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了