如何使用 SQLite 在 qt 中创建 table?
How to create a table in qt with SQLite?
我有一个 属性 的 class 名为 m_database。
class SqlThread : public QThread
{
public:
SqlThread();
void run();
private:
QSqlDatabase m_database;
QString m_dbfilename;
};
我在构造函数中实例化,如下例所示:
SqlThread::SqlThread()
{
m_database = QSqlDatabase::addDatabase("QSQLITE");
}
然后我在 运行 函数中创建数据库,就像那样(我与其他 class 一起创建的 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);");
否则如果table已经存在则执行失败。
我有一个 属性 的 class 名为 m_database。
class SqlThread : public QThread
{
public:
SqlThread();
void run();
private:
QSqlDatabase m_database;
QString m_dbfilename;
};
我在构造函数中实例化,如下例所示:
SqlThread::SqlThread()
{
m_database = QSqlDatabase::addDatabase("QSQLITE");
}
然后我在 运行 函数中创建数据库,就像那样(我与其他 class 一起创建的 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);");
否则如果table已经存在则执行失败。