2010-12-12 3 views
2

Ich habe das folgende Skript, das ich in QString in Qt verwende und an eine QSqlQuery um Tabellen in einer SQLite-Datenbank zu erstellen.Qt Sqlite erstellt nur eine Tabelle aus dem Skript

Das Skript.

Wenn jedoch das Skript ausgeführt wird, wird nur die erste Tabelle in der Datenbank erstellt.

Danke für jede Hilfe.

+2

Ich bin nicht vertraut mit qt, aber es scheint wahrscheinlich, dass 'QSqlQuery' nur eine SQLite-Anweisung zu einem Zeitpunkt verarbeiten kann. Zerlegen Sie Ihr SQL in drei separate Aufrufe von 'QSqlQuery :: exec', eines für jede Tabelle. – Nate

Antwort

3

QSqlQuery leitet die Anweisung an den SQlite-Treiber weiter, wo die Abfragezeichenfolgen von sqlite3_prepare (...) analysiert werden. Die documentation sagt, dass "diese Routinen nur die erste Anweisung in zSql kompilieren". Fazit: Dies ist ein "Feature" von SQLite.

1

Vielleicht helfen Ihnen:

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