当前位置:Gxlcms > 数据库问题 > QSqlDatabase数据库链接

QSqlDatabase数据库链接

时间:2021-07-01 10:21:17 帮助过:21人阅读

数据库链接相关介绍:

  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数据库链接

标签:

人气教程排行