c++ - 如何使用 SQLite 在 qt 中创建表?

标签 c++ database sqlite qt qt-creator

我有一个名为 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;
    }

为什么我收到错误信息:无查询无法获取行 ??

最佳答案

将查询字符串替换为:

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

否则,如果表已存在,则执行失败。

关于c++ - 如何使用 SQLite 在 qt 中创建表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62434913/

相关文章:

c++ - Win32 API ListView 创建 (C++)

c++ - 数组中的错误功能排序

c++ - 如何在 Atmel Studio 6 中为 C++ 更改 avr32-gcc C 编译器而无需创建新项目?

php - 为什么我的 Array 输出到 mysql 数据库会出错?

sql - MySQL 不使用带有 WHERE IN 子句的索引?

sql - SQLite中的递归更新

c++ - 多变光照条件下的多运动物体检测。

c# - Entity Framework 6 和 SQLite - 无法使用之前删除的条目的 PK 创建条目

sqlite - 我如何在 MSBUILD(Exec 任务)中执行 sqlite (sqlite3) 语句?

mysql - 如何比较这两个日期并排除相同的实例?