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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не отображает содержание таблицы sqlite в QTableView  (Прочитано 10951 раз)
AndreyCh
Гость
« : Сентябрь 12, 2008, 13:30 »

Код:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE2");
db.setDatabaseName("D:/podchinen_forma/debug/books.sqlite1");
bool ok = db.open();

model = new QSqlTableModel(this);
model->setTable("books");
model->setSort(books_id, Qt::AscendingOrder);
model->select();
ui.tableView->setModel(model);
ui.tableView->resizeColumnsToContents();
ui.tableView->show();
заголовок отображает а вот содержание таблицы нет, почему?
Записан
neosapient
Гость
« Ответ #1 : Сентябрь 12, 2008, 14:28 »

Попробуй

Код:
ui.tableView->setRowCount(NUM_RECORD);
Этой командой ты выделишь необходимое число строк под таблицу
Записан
developer
Гость
« Ответ #2 : Сентябрь 12, 2008, 14:37 »

Нужно задавать имя базы данных, а не полный путь к ней.
Код:
db.setDatabaseName("D:/podchinen_forma/debug/books.sqlite1");
Ето раз. Во вторых - файл базы данных в sqlite не имеет расширения, возможно ето неправильный файл.
Во третьих - файл создаеться в той же папке где и файл *.exe программы. Так что если файл books.sqlite1все таки правильный то попробуй поместить его в папку где находиться программа. Я так всегда делаю когда использую sqlite, потому что иных способов не знаю  В замешательстве
Записан
ритт
Гость
« Ответ #3 : Сентябрь 12, 2008, 15:02 »

пилять, мужики, вы о чём? какой setRowCount? какое расширение?

AndreyCh, выложи компилябельный проект и файл базы - вечером посмотрю
Записан
AndreyCh
Гость
« Ответ #4 : Сентябрь 12, 2008, 15:45 »

пилять, мужики, вы о чём? какой setRowCount? какое расширение?

AndreyCh, выложи компилябельный проект и файл базы - вечером посмотрю
выкладываю. проект собран на D:, sqlite2 не 3.
http://rapidshare.com/files/144649937/podchinen_forma.rar.html
Записан
mikemorgunov
Гость
« Ответ #5 : Сентябрь 12, 2008, 22:49 »

Здравствуйте. У меня такая же проблема( не открывать же новый топик).
У меня openSUSE 10.3 QT 4.3.1  sqlite3.
Код:
#include<QtCore>
#include<QtSql>
int main() {
    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("obs.db");
    if (!db.open()) {
       qDebug() << "БД не открыта" << db.lastError();
       return 1;
    }
    qDebug() << "БД открыта";
    return 0;
}

код компильный
QT += sql
/usr/lib/qt4/plugins/sqldrivers/libqsqlite.so  - в наличии.
выдает:

QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
   QSqlError(-1, "Driver not loaded", "Driver not loaded")

Как это вылечить?

P.S. В bash и python - все открывает и читает.

Заранее спасибо.
Записан
ритт
Гость
« Ответ #6 : Сентябрь 13, 2008, 02:04 »

а что говорит ldd /usr/lib/qt4/plugins/sqldrivers/libqsqlite.so ?
Записан
mikemorgunov
Гость
« Ответ #7 : Сентябрь 13, 2008, 12:05 »

 ldd говорит:
ike@linux:~/connectdb> ldd /usr/lib/qt4/plugins/sqldrivers/libqsqlite.so
        linux-gate.so.1 =>  (0xffffe000)
        libsqlite3.so.0 => /usr/lib/libsqlite3.so.0 (0xb7ef5000)
        libQtSql.so.4 => /usr/lib/libQtSql.so.4 (0xb7ec9000)
        libQtCore.so.4 => /usr/lib/libQtCore.so.4 (0xb7d64000)
        libz.so.1 => /lib/libz.so.1 (0xb7d51000)
        libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0xb7d4b000)
        librt.so.1 => /lib/librt.so.1 (0xb7d42000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7c83000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7c6c000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7c68000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7b7a000)
        libm.so.6 => /lib/libm.so.6 (0xb7b54000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7b48000)
        libc.so.6 => /lib/libc.so.6 (0xb7a15000)
        /lib/ld-linux.so.2 (0x80000000)
Записан
mikemorgunov
Гость
« Ответ #8 : Сентябрь 13, 2008, 12:19 »

откомпилил по другому:
 g++ connect.cc -g -o t `pkg-config QtSql QtCore --libs --cflags`

запустил в gdb, лог приводить не буду, но:

похоже она грузит default driver и он не QSQLITE ( ? MySQL)
Записан
ритт
Гость
« Ответ #9 : Сентябрь 13, 2008, 13:29 »

default driver - это nulldriver - он ничего не умеет, поэтому ничего и не делает...и всегда возвращает ложь и/или ошибки
Записан
mikemorgunov
Гость
« Ответ #10 : Сентябрь 14, 2008, 13:38 »

Разобрался. Может кому интересно.

Надо добавить всего 1 оператор QCoreApplication app(argc,argv) и все заработало.
Код:
#include <QtCore>
#include <QtSql>
int main(int argc, char** argv) {
    QCoreApplication app(argc, argv); 

    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
    db.setDatabaseName("obs.db");
    if (!db.open()) {
       qDebug() << "Cannot open db" << db.lastError();
       return 1;
    }
    qDebug() << "bd is opened";
    return 0;
}   
Записан
AndreyCh
Гость
« Ответ #11 : Сентябрь 15, 2008, 11:02 »

Проверил с sqlite 3, все работает, а вот с sqlite 2 но не как. Хотя все запросы нормально обрабатываются. Подскажите как можно записать в массив запрос к базе, а после вывести с помощью QTableView?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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