2014-02-15 4 views
4

Я попытался с помощью SQLite в 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

+0

база данных существует? (shure он должен создать его, если он не существует, но, может быть, ...) нет прав на заданный путь? – Zaiborg

ответ

2

пара проблем я вижу, что должен получить эту работу.
1. Вы должны передать объект базы данных в QSqlQuery при ее создании.
следующую строку неправильно

QSqlQuery createQuery; 

Изменить его к следующему, и вы должны быть хорошо

QSqlQuery createQuery(DB); 


2. Вам нужно открыть базу данных, прежде чем создать объект QSqlQuery. Соединение с базой данных должно быть открытым, если вы инициализируете объект QSqlQuery.

Таким образом, вместо этого:

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

сделать

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

Это должно все заработало.

Смежные вопросы