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

How to create a table in qt with SQLite?

本文关键字:创建 qt 何使用 SQLite      更新时间:2023-10-16

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

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