Qt Sqlite只能从脚本中创建一个表格

3
我有以下脚本,我正在使用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)
);

然而,当脚本运行时,只有第一个表格被创建到数据库中。
谢谢任何帮助。

2
我不熟悉qt,但似乎QSqlQuery只能一次处理一个SQLite语句。将您的SQL拆分为三个单独的调用QSqlQuery::exec,每个表一个。 - Nate
2个回答

3

QSqlQuery将语句转发给SQlite驱动程序,查询字符串由sqlite3_prepare(...)进行分析。 文档指出:“这些例程仅编译zSql中的第一个语句”。结论:这是SQLite的“特性”。


1

也许这可以帮助你:

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)");

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