码迷,mamicode.com
首页 > 数据库 > 详细

QSqlDatabase数据库链接

时间:2015-08-17 17:37:27      阅读:442      评论:0      收藏:0      [点我收藏+]

标签:

数据库链接相关介绍:

  1. QSqlDatabase类的一个对象,代表一个数据库链接,这个链接与某个物理.db文件相连接。
  2. 一个.db文件可以与多个数据库链接相连,即能与多个QSqlDatabase类对象相连
  3. 连接.db文件和数据库链接的函数:setDatabaseName(tr("database.db"));
  4. 这里的参数 database.db 就是要连接的.db文件的路径,对,是路径+文件名。默认路径为当前路径,一般在build。。。debug或release文件夹中。
  5. 这个函数属于QSqlDatabase类
  6. 不同的链接用链接名称(connectionName)来区分,这个connectionName是创建数据库链接的函数的第二个参数。
  7. 创建数据库链接的函数:

        base = QSqlDatabase::addDatabase("QSQLITE",tr("abc"));

        base = QSqlDatabase::addDatabase("QSQLITE");

        第一个函数中,我提供了参数:链接名称。

        第二个函数中没有提供,因为它有默认值:"qt_sql_default_connection"  

        如果只有一个数据库链接,一般使用第二种,不指定链接名称。

  1. 要对数据库进行操作经常会用到QSqlQuery类,其对象定义有两种:(编号算法好烂,这里该是8)

        QSqlQuery query(base);

        QSqlQuery query;

        如果只有一个数据库链接,则其对象构造函数不需要参数,这个query对象直接和默认数据库链接挂钩。

        若是有多个链接,就要用第一种来指定要操作的数据库链接。

 

  • 错误信息1:

QSqlQuery::exec: database not open

明明调用open函数了,怎么会not open?原因如下:

base = QSqlDatabase::addDatabase("QSQLITE",tr("abc"));   //这里指定数据库链接名称为abc

而定义query对象时,QSqlQuery query(base);    //虽然已指定query操作的数据库链接

但还是出现以上错误,说明两个可能:

(1)base没有正确的调用open函数;

查询后发现open没有参数可指定,所以如果是这个原因,我没有解决办法。

(2)第一个链接直接使用默认链接,不能指定名称。

这是个强制的条件,之后又创建新的链接对象时,再指定名称,用来与默认名称相区分。

 

  • 错误信息2:

"append data failed:" "Driver not loaded Driver not loaded"

QSqlQuery::exec: database not open

这次在not open基础上,连驱动都出问题了,但不要被吓到。这只是代码中几个字符修改的后果。

这次的链接名称依然是abc。

(1)但query对象的定义变成了

 QSqlQuery query;        //这里没有指定query要操作的数据库

(2)这里使用的base.lastError().text()函数,把base换成query就是具体的错误信息了。

 

 

以上QSqlQuery 对象出现的问题,也适用于QSqlQueryModel。

注意QSqlQueryModel的setQuery函数第二个参数

 

以上文字中从“错误信息1”开始,颜色就不正常了,“删除格式”、“字体颜色”设置也不好用,凑合看吧。

 

QSqlDatabase数据库链接

标签:

原文地址:http://my.oschina.net/NewMoon/blog/493544

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!