SQLITE 内存不足 无法执行语句

SQLITE out of memory Unable to execute statement

本文关键字:执行 语句 内存不足 SQLITE      更新时间:2023-10-16

我尝试在qt中使用sqlite,但遇到了一个错误。

qDebug() << QSqlDatabase::drivers();
QSqlDatabase DB = QSqlDatabase::addDatabase("QSQLITE");
DB.setDatabaseName("/Volumes/MAJID/majid/Naminic/db0.db");
QSqlQuery createQuery;
qDebug()<< "open: " << DB.open();
createQuery.exec("CREATE TABLE contact(name,tell)");
qDebug() << createQuery.lastError().text();
qDebug() << "insert : " << createQuery.exec("insert into contact(name,tell) values('a','b')");
qDebug() << createQuery.lastError().text();

这是调试的输出:

(“QSQLITE”, “QODBC3”, “QODBC”)

open: true

out of memory Unable to execute statement

insert : false

out of memory Unable to execute statement

我看到的几个问题应该让它工作。
1. 创建数据库对象时,您需要将它传递给 QSqlQuery。
以下行是错误的

QSqlQuery createQuery;

将其更改为以下内容,您应该很好

QSqlQuery createQuery(DB);


2. 您需要在创建 QSqlQuery 对象之前打开数据库。 如果使用数据库初始化 QSqlQuery 对象,则需要打开与数据库的连接。

所以取而代之的是:

QSqlQuery createQuery(DB);
qDebug()<< "open: " << DB.open();

这样做

qDebug()<< "open: " << DB.open();
QSqlQuery createQuery(DB);

这应该让事情顺利进行。

在设置查询(db)之前打开数据库对我有用。将此添加到头部。

if(!db.isOpened()) db.open();
if(db.isOpenError()) return false;