如何在Qt中使用SQLite创建一个表格?

4
我有一个名为m_database的类属性。
class SqlThread : public QThread
{
public:
SqlThread();
void run();

private:
QSqlDatabase   m_database;
QString        m_dbfilename;
};

我会在构造函数中像下面的例子一样实例化:

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

我在 run 函数中创建数据库,如下所示(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;
    }

为什么我会收到错误信息:No query Unable to fetch row

我真的很困惑,因为有时函数能工作,而有时又不行。 - antuniooh
1个回答

3

将查询字符串替换为:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接