Qt Sqlite 只从脚本创建一张表

Posted

技术标签:

【中文标题】Qt Sqlite 只从脚本创建一张表【英文标题】:Qt Sqlite only creates one table from script 【发布时间】:2010-12-12 06:52:50 【问题描述】:

我在 qt 的 QString 中使用了以下脚本,并提供给 QSqlQuery 以在 Sqlite 数据库中创建表。

脚本。

CREATE TABLE accounts
(
   A_Id           INTEGER PRIMARY KEY,
   Account_Name   TEXT,
   Account_Date   TEXT
);

CREATE TABLE statements
(
   S_Id           INTEGER PRIMARY KEY,
   Statement_Name TEXT
);

CREATE TABLE transactions
(
   T_Id              INTEGER PRIMARY KEY,
   A_Id              INTEGER,
   S_Id              INTEGER,
   Amount            REAL,
   Transaction_Date  TEXT,
   FOREIGN KEY(A_Id) REFERENCES accounts(A_Id),
   FOREIGN KEY(S_Id) REFERENCES statements(S_Id)
);

但是,当脚本运行时,只会在数据库中创建第一个表。

感谢您的帮助。

【问题讨论】:

我对qt不熟悉,但QSqlQuery似乎一次只能处理一个SQLite语句。将您的 SQL 分解为对 QSqlQuery::exec 的三个单独调用,每个表调用一个。 【参考方案1】:

QSqlQuery 将语句转发到 SQlite 驱动程序,其中查询字符串由 sqlite3_prepare(...) 分析。 documentation 表示“这些例程只编译 zSql 中的第一条语句”。结论:这是 SQLite 的一个“特性”。

【讨论】:

【参考方案2】:

也许这对你有帮助:

db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("your_nameDB.db");
QSqlQuery query(db);
query.exec("CREATE TABLE Accounts"
           "(A_Id INTEGER PRIMARY KEY, Account_Name TEXT,Account_Date TEXT)");

【讨论】:

以上是关于Qt Sqlite 只从脚本创建一张表的主要内容,如果未能解决你的问题,请参考以下文章

14 SQLite数据库

NSBundle 中的 CoreData sqlite 文件

创建一张表

手动创建一张表

求和列 SQLite Android 并在 TextView 上显示 [关闭]

如何使用 SQLAlchemy 只创建一张表?