Per calci Sto scrivendo uno strumento "documentazione dello schema" che genera una descrizione delle tabelle e delle relazioni in un database. Attualmente lo sto facendo funzionare con SQLite.Trova nomi di colonne SQLite nella tabella vuota
Sono riuscito a estrarre i nomi di tutte le tabelle in un database SQLite tramite una query sulla tabella sqlite_master
. Per ogni nome di tabella, ho poi sparare una semplice query
select * from <table name>
, quindi utilizzare le API sqlite3_column_count()
e sqlite3_column_name()
per raccogliere i nomi delle colonne, che ho ulteriormente feed per sqlite3_table_column_metadata()
per ottenere informazioni aggiuntive. Abbastanza semplice, giusto?
Il problema è che funziona solo per le tabelle che non sono vuote. Vale a dire, le API sqlite_column_*()
sono valide solo se sqlite_step()
ha restituito SQLITE_ROW
, che non è il caso per le tabelle vuote.
Quindi la domanda è, come posso scoprire i nomi delle colonne per le tabelle vuote? O, più in generale, c'è un modo migliore per ottenere questo tipo di informazioni sullo schema in SQLite?
Mi sento come se ci fosse un altro tavolo nascosto sqlite_xxx
in agguato da qualche parte contenente queste informazioni, ma finora non sono stato in grado di trovarlo.
Grazie a tutti. Ho erroneamente pensato che l'interfaccia PRAGMA fosse solo per il client della riga di comando 'sqlite3'. –