2010-12-12 14 views
2

私はQtのQStringで使用しているスクリプトを用意しています。これはQSQLqlに渡してSqliteデータベースにテーブルを作成しています。Qt Sqliteはスクリプトから1つのテーブルのみを作成します

スクリプト。

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'は一度に1つのSQLiteの文を処理できる可能性が高いようです。あなたのSQLを3つの別々の 'QSqlQuery :: exec'呼び出しで分割します。 – Nate

答えて

3

QSqlQueryは、クエリ文字列がsqlite3_prepare(...)によって解析されるSQliteドライバにステートメントを転送します。 documentationは、 "これらのルーチンは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)"); 
関連する問題