2010-12-12 28 views
2

J'ai le script suivant que j'utilise dans un QString en qt et qui fournit à QSqlQuery des tables dans une base de données Sqlite.Qt Sqlite ne crée qu'une seule table à partir du script

Le script. Cependant, lorsque les scripts s'exécutent, seule la première table est créée dans la base de données.

Merci pour toute aide.

+2

Je ne suis pas familier avec qt, mais il semble probable que 'QSqlQuery' ne peut traiter une instruction SQLite à la fois. Brisez votre SQL en trois appels distincts à QSqlQuery :: exec, un pour chaque table. – Nate

Répondre

3

QSqlQuery transmet l'instruction au pilote SQlite où les chaînes de requête sont analysées par sqlite3_prepare (...). Le documentation dit que "ces routines ne compilent que la première déclaration de zSql". Conclusion: Ceci est une "caractéristique" de SQLite.

1

Peut-être vous aider:

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