Russian Qt Forum
Ноябрь 23, 2024, 21:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 4.1.5 Не выполняется запрос QSqlQuery  (Прочитано 9632 раз)
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 - синтакс еррор.. но вроде в уж в запросе ошибок то нет... в чем проблема?

ПоможИте =)
В приложении сама прога и бд...
« Последнее редактирование: Март 04, 2009, 11:43 от Danila_Bagrofff » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Март 04, 2009, 11:45 »

добавь в файл проекта строку:
CONFIG += console
Qt'я сама тебе скажет в консоль если с БД что-то не так.
Записан

Юра.
Danila_Bagrofff
Гость
« Ответ #2 : Март 04, 2009, 11:53 »

а если я не использую про-файлы...

только make... там это куда писать?)
Записан
BRE
Гость
« Ответ #3 : Март 04, 2009, 13:35 »

а если я не использую про-файлы...

только make... там это куда писать?)
Имя таблицы наверное все же rasc.
После изменения ошибка:
Цитировать
Error! No query! database disk image is malformed Unable to fetch row, type[1]
Не нравится Qt образ этой БД.  Подмигивающий
Чем создавался файл 01_44.aptdb?
Записан
Danila_Bagrofff
Гость
« Ответ #4 : Март 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() выполняется корректно вроде.
Никакой ошибки и не выдает.
Записан
BRE
Гость
« Ответ #5 : Март 04, 2009, 13:47 »

а с помощью чего ты получил такую инфу?
Какую именно, про имя таблицы или про ошибку?
Записан
Danila_Bagrofff
Гость
« Ответ #6 : Март 04, 2009, 14:01 »

про ошибку совместимости бд и qt...

напрямую открывая бд как текст, rask  я видел тоже:-)
Записан
BRE
Гость
« Ответ #7 : Март 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>  
Попроси пусть тебе этот файл заново перешлют.
Записан
Danila_Bagrofff
Гость
« Ответ #8 : Март 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>  
Попроси пусть тебе этот файл заново перешлют.

Спасибо. Очень благодарен.
Да, пожалуй нужно более активно включаться в работу данного ресурса. Очень приятно виДеть такую оперативность.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 23.