Russian Qt Forum

Qt => Базы данных => Тема начата: Danila_Bagrofff от Март 04, 2009, 11:13



Название: Qt 4.1.5 Не выполняется запрос QSqlQuery
Отправлено: Danila_Bagrofff от Март 04, 2009, 11:13
Есть БД типа sqlite, в ней есть таблица rask
Вот есть код:


Код:
//соединение с бд
bool DMainDialog::createConnection(QString NameDatabase)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(NameDatabase); //путь до файла /home/Danila/adepttest/source/01_44.adtdb
if(!db.open())
{
qWarning(" No open DB!!! %s", db.lastError().text().toAscii().data());
return false;
}

return true;
}

//открытие бд
bool DMainDialog::sl_bOpenFile()
{
m_qsFileAptdb = QFileDialog::getOpenFileName(this, "Open Dialog", "./source/", "*.aptdb");
setWindowTitle(m_qsFileAptdb);
qWarning("m_qsFileAptdb = %s", m_qsFileAptdb.toAscii().data());

if(!createConnection(m_qsFileAptdb))
{
qWarning("Error! No connection!");
return false;
}

QSqlQuery query;
if(!query.exec("SELECT * FROM rask")) [b]//по умолчанию там есть такая таблица[/b]
qWarning("Error! No query! %s, type[%d]", query.lastError().text().toAscii().data(), query.lastError().type());

QSqlRecord rec = query.record();
int ID;
int subID;
QString subIDName;
while (query.next())
{
ID = query.value(rec.indexOf("ID")).toInt();
subID = query.value(rec.indexOf("subID")).toInt();
subIDName = query.value(rec.indexOf("subIDName")).toString();
}
qWarning("ID\tsubID\tsubIDName");
qWarning("%d\t%d\t%s", ID, subID, subIDName.toAscii().data());
}

запрос exec не выполняется, в результате выпадает следующее сообщение:
unsupported file format Unable to execute statement, тип сообщения  - 2 - синтакс еррор.. но вроде в уж в запросе ошибок то нет... в чем проблема?

ПоможИте =)
В приложении сама прога и бд...


Название: Re: Qt 4.1.5 Не выполняется запрос QSqlQuery
Отправлено: lit-uriy от Март 04, 2009, 11:45
добавь в файл проекта строку:
CONFIG += console
Qt'я сама тебе скажет в консоль если с БД что-то не так.


Название: Re: Qt 4.1.5 Не выполняется запрос QSqlQuery
Отправлено: Danila_Bagrofff от Март 04, 2009, 11:53
а если я не использую про-файлы...

только make... там это куда писать?)


Название: Re: Qt 4.1.5 Не выполняется запрос QSqlQuery
Отправлено: BRE от Март 04, 2009, 13:35
а если я не использую про-файлы...

только make... там это куда писать?)
Имя таблицы наверное все же rasc.
После изменения ошибка:
Цитировать
Error! No query! database disk image is malformed Unable to fetch row, type[1]
Не нравится Qt образ этой БД.  ;)
Чем создавался файл 01_44.aptdb?


Название: Re: Qt 4.1.5 Не выполняется запрос QSqlQuery
Отправлено: Danila_Bagrofff от Март 04, 2009, 13:45
а если я не использую про-файлы...

только make... там это куда писать?)
Имя таблицы наверное все же rasc.
После изменения ошибка:
Цитировать
Error! No query! database disk image is malformed Unable to fetch row, type[1]
Не нравится Qt образ этой БД.  ;)
Чем создавался файл 01_44.aptdb?

а с помощью чего ты получил такую инфу?
bd.isValid() выполняется корректно вроде.
Никакой ошибки и не выдает.


Название: Re: Qt 4.1.5 Не выполняется запрос QSqlQuery
Отправлено: BRE от Март 04, 2009, 13:47
а с помощью чего ты получил такую инфу?
Какую именно, про имя таблицы или про ошибку?


Название: Re: Qt 4.1.5 Не выполняется запрос QSqlQuery
Отправлено: Danila_Bagrofff от Март 04, 2009, 14:01
про ошибку совместимости бд и qt...

напрямую открывая бд как текст, rask  я видел тоже:-)


Название: Re: Qt 4.1.5 Не выполняется запрос QSqlQuery
Отправлено: BRE от Март 04, 2009, 14:02
База "битая", попробовал открыть в клиенте sqlite:
Цитировать
$ sqlite3 01_44.aptdb
SQLite version 3.3.6
Enter ".help" for instructions
sqlite> .dump
BEGIN TRANSACTION;
CREATE TABLE rasc (ID NUMERIC, subID TEXT, subIDName TEXT, Code TEXT, Cpred TEXT, Xmax TEXT, Ppred TEXT, Unit TEXT, Xmin TEXT, Year TEXT, Typ TEXT, Xzad TEXT, KoeffTek TEXT, Csled TEXT, A TEXT, B TEXT, Name TEXT, Mnogitel TEXT, Psled TEXT,  Razdel TEXT);
COMMIT;
sqlite> select * from rasc;
SQL error: database disk image is malformed
sqlite>  
Попроси пусть тебе этот файл заново перешлют.


Название: Re: Qt 4.1.5 Не выполняется запрос QSqlQuery
Отправлено: Danila_Bagrofff от Март 04, 2009, 14:09
База "битая", попробовал открыть в клиенте sqlite:
Цитировать
$ sqlite3 01_44.aptdb
SQLite version 3.3.6
Enter ".help" for instructions
sqlite> .dump
BEGIN TRANSACTION;
CREATE TABLE rasc (ID NUMERIC, subID TEXT, subIDName TEXT, Code TEXT, Cpred TEXT, Xmax TEXT, Ppred TEXT, Unit TEXT, Xmin TEXT, Year TEXT, Typ TEXT, Xzad TEXT, KoeffTek TEXT, Csled TEXT, A TEXT, B TEXT, Name TEXT, Mnogitel TEXT, Psled TEXT,  Razdel TEXT);
COMMIT;
sqlite> select * from rasc;
SQL error: database disk image is malformed
sqlite>  
Попроси пусть тебе этот файл заново перешлют.

Спасибо. Очень благодарен.
Да, пожалуй нужно более активно включаться в работу данного ресурса. Очень приятно виДеть такую оперативность.