2010-12-12 9 views
2

다음 스크립트를 Qt의 QString에서 사용하고 QSQLQuery를 사용하여 Sqlite 데이터베이스에 테이블을 생성합니다.Qt 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'에 대한 3 개의 개별 호출로 분해하십시오. – 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)");