Как создать таблицу в qt с помощью SQLite? - PullRequest
2 голосов
/ 17 июня 2020

У меня есть свойство класса с именем m_database.

class SqlThread : public QThread
{
public:
SqlThread();
void run();

private:
QSqlDatabase   m_database;
QString        m_dbfilename;
};

и я создаю экземпляр в конструкторе, как в примере ниже:

SqlThread::SqlThread()
{
 m_database = QSqlDatabase::addDatabase("QSQLITE");
}

И я создаю базу данных в функции запуска, например (M_dbFileName, который я создал с другим классом):

    m_database.setDatabaseName(m_dbfilename);

    if (!m_database.open())
    {
        qWarning("%s", m_database.lastError().text().toLocal8Bit().data());
        return;
    }

    QSqlQuery databaseQuery(m_database);
    databaseQuery.prepare("CREATE TABLE data (id int not null primary key, tu text, data BLOB, puits integer);");

    if (!databaseQuery.exec())
    {
        qWarning("%s", databaseQuery.lastError().text().toLocal8Bit().data());
        return;
    }

Почему я получаю сообщение об ошибке: Нет запроса Невозможно получить строку ??

1 Ответ

1 голос
/ 18 июня 2020

Замените строку запроса на:

databaseQuery.prepare("CREATE TABLE IF NOT EXISTS data (id int not null primary key, tu text, data BLOB, puits integer);");

В противном случае выполнение завершится неудачно, если таблица уже существует.

...