C++ Qt Sqlite仅从脚本创建一个表

C++ Qt Sqlite仅从脚本创建一个表,c++,sql,qt,sqlite,C++,Sql,Qt,Sqlite,我在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

我在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)
);
但是,当脚本运行时,只在数据库中创建第一个表


感谢您的帮助。

QSqlQuery将语句转发给SQlite驱动程序,sqlite3\u prepare(…)将在该驱动程序中分析查询字符串。声明说“这些例程只编译zSql中的第一条语句”。结论:这是SQLite的一个“特点”。

也许这有助于您:

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,但似乎
QSqlQuery
一次只能处理一条SQLite语句。将SQL分解为对
QSqlQuery::exec
的三个单独调用,每个表调用一个。