标签:
base = QSqlDatabase::addDatabase("QSQLITE",tr("abc"));
base = QSqlDatabase::addDatabase("QSQLITE");
第一个函数中,我提供了参数:链接名称。
第二个函数中没有提供,因为它有默认值:"qt_sql_default_connection"
如果只有一个数据库链接,一般使用第二种,不指定链接名称。
QSqlQuery query(base);
QSqlQuery query;
如果只有一个数据库链接,则其对象构造函数不需要参数,这个query对象直接和默认数据库链接挂钩。
若是有多个链接,就要用第一种来指定要操作的数据库链接。
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)第一个链接直接使用默认链接,不能指定名称。
这是个强制的条件,之后又创建新的链接对象时,再指定名称,用来与默认名称相区分。
"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”开始,颜色就不正常了,“删除格式”、“字体颜色”设置也不好用,凑合看吧。
标签:
原文地址:http://my.oschina.net/NewMoon/blog/493544