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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с SQLite  (Прочитано 2633 раз)
qwyllum
Гость
« : Апрель 06, 2013, 11:43 »

Пробовал работать с БД. Пишу что-то вроде:

Код:
 QSqlDatabase dbase = QSqlDatabase::addDatabase("QSQLITE");
        dbase.setDatabaseName("db1.sqlite");
        if (!dbase.open()) {
            qDebug() << "Что-то не так с соединением!";

        }
        else
        {
             qDebug() << "Все отлично и это странно!";
        }

Программа выдает, что все отлично, даже если я выбираю файл, которого не существует.

В pro-файле "QT       += sql" прописан

Подскажите пожалуйста, что я не так делаю?
Записан
maint
Гость
« Ответ #1 : Апрель 06, 2013, 11:55 »

sqlite запросто сам создает файл с нулевой длиной при open. Надо проверять на существование файла
Записан
qwyllum
Гость
« Ответ #2 : Апрель 06, 2013, 12:29 »

sqlite запросто сам создает файл с нулевой длиной при open. Надо проверять на существование файла
Огромное спасибо за ответ! Изменил на  dbase.setDatabaseName("c:\db1.sqlite") и действительно обнаружил на диске С свою БД. Заполнил ее данными с помощью
Код:
        QSqlQuery a_query;

            QString str = "CREATE TABLE my_table ("
                    "number integer PRIMARY KEY NOT NULL, "
                    "address VARCHAR(255), "
                    "age integer"
                    ");";
          bool b = a_query.exec(str);
          if (!b) {
              qDebug() << "Вроде не удается создать таблицу!";
           }

qDebug выдает про ошибку создания таблицы, но при этом, если открываешь БД сторонней программой, таблица с полями существует. Пытаюсь вывести ее на экран с помощью

Код:
          model.setTable("my_table");
          model.setEditStrategy(QSqlTableModel::OnFieldChange);
          model.select();
         
          ui->tableView->setModel(&model);
          ui->tableView->show();

однако ничего не показывается. tableView создавал с помощью дизайнера на форме.
Записан
LEO
Гость
« Ответ #3 : Апрель 08, 2013, 07:58 »

А как модель создаешь?
Записан
Bepec
Гость
« Ответ #4 : Апрель 08, 2013, 08:44 »

Я звиняюсь, шо влезаю тута, но почему в вашем коде заполнения данными нет привязки запроса к базе, вроде?

И да, выводите таки не "Вроде не удается создать таблицу!", а
Код:
a_query.lastError().text()
Таки будет всем удобнее и вам в том числе.
« Последнее редактирование: Апрель 09, 2013, 07:07 от Bepec » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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