Russian Qt Forum

Qt => Вопросы новичков => Тема начата: qwyllum от Апрель 06, 2013, 11:43



Название: Работа с SQLite
Отправлено: qwyllum от Апрель 06, 2013, 11:43
Пробовал работать с БД. Пишу что-то вроде:

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

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

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

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

Подскажите пожалуйста, что я не так делаю?


Название: Re: Работа с SQLite
Отправлено: maint от Апрель 06, 2013, 11:55
sqlite запросто сам создает файл с нулевой длиной при open. Надо проверять на существование файла


Название: Re: Работа с SQLite
Отправлено: qwyllum от Апрель 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 создавал с помощью дизайнера на форме.


Название: Re: Работа с SQLite
Отправлено: LEO от Апрель 08, 2013, 07:58
А как модель создаешь?


Название: Re: Работа с SQLite
Отправлено: Bepec от Апрель 08, 2013, 08:44
Я звиняюсь, шо влезаю тута, но почему в вашем коде заполнения данными нет привязки запроса к базе, вроде?

И да, выводите таки не "Вроде не удается создать таблицу!", а
Код:
a_query.lastError().text()
Таки будет всем удобнее и вам в том числе.