我在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)
);
但是,当脚本运行时,只会在数据库中创建第一个表。
感谢您的帮助。
答案 0 :(得分:3)
QSqlQuery将语句转发到SQlite驱动程序,其中sqlite3_prepare(...)分析查询字符串。 documentation表示“这些例程只编译zSql中的第一个语句”。结论:这是SQLite的“特性”。
答案 1 :(得分: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)");