2010-07-20 14 views
9

Mi chiedevo quale sia il modo "migliore" per verificare la struttura del mio database con SQLite in Qt/C++. Sto usando SQLite quindi c'è un file che contiene il mio database, e voglio assicurarmi che, all'avvio del programma, il database sia strutturato nel modo in cui dovrebbe essere - cioè, ha tabelle X ciascuna con le proprie colonne Y , opportunamente chiamato, ecc. Qualcuno potrebbe indicarmi la giusta direzione? Grazie mille!Verificare la struttura di un database? (SQLite in C++/Qt)

risposta

6

È possibile ottenere un elenco di tutte le tabelle nel database con questa query:

select tbl_name from sqlite_master; 

E poi per ogni tabella restituito, eseguire la query per ottenere informazioni colonna

pragma table_info(my_table); 

Per la pragma, ogni riga del set di risultati conterrà: un indice di colonna, il nome della colonna, l'affinità del tipo della colonna, se la colonna potrebbe essere NULL e il valore predefinito della colonna.

(sto supponendo qui che si sa come eseguire query SQL sul database nell'interfaccia SQLite C.)

+0

Assolutamente, grazie per avermi messo sulla strada giusta! – Joseph

2

Se si dispone di QT e quindi QtSql a portata di mano, è anche possibile utilizzare il QSqlDatabase::tables() (API doc) metodo per ottenere le tabelle e QSqlDatabase::record(tablename) per ottenere i nomi dei campi. Può anche darti la chiave primaria (s), ma per ulteriori dettagli si dovrà seguire il consiglio di pkh per utilizzare il pragma table_info.

Problemi correlati