Russian Qt Forum
Апреля 20, 2025, 08:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

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