2010-07-20 11 views
9

Me preguntaba cuál es la "mejor" forma de verificar la estructura de mi base de datos con SQLite en Qt/C++. Estoy usando SQLite por lo que hay un archivo que contiene mi base de datos, y quiero asegurarme de que, al iniciar el programa, la base de datos esté estructurada de la manera que debería ser, es decir, tenga tablas X cada una con sus propias columnas Y , apropiadamente nombrado, etc. ¿Podría alguien apuntarme en la dirección correcta? ¡Muchas gracias!Verificar la estructura de una base de datos? (SQLite en C++/Qt)

Respuesta

6

Usted puede obtener una lista de todas las tablas de la base de datos con esta consulta:

select tbl_name from sqlite_master; 

Y a continuación, para cada tabla devuelta, ejecutar esta consulta para obtener información de la columna

pragma table_info(my_table); 

Para el pragma, cada fila del conjunto de resultados contendrá: un índice de columna, el nombre de columna, la afinidad de tipo de columna, si la columna puede ser NULL y el valor predeterminado de la columna.

(estoy asumiendo aquí que ya sabe cómo ejecutar consultas SQL contra la base de datos en la interfaz de SQLite C.)

+0

¡Absolutamente, gracias por ponerme en el camino correcto! – Joseph

2

Si tiene QT y por lo tanto QtSql a mano, también se puede utilizar el QSqlDatabase::tables() (API doc) método para obtener las tablas y QSqlDatabase::record(tablename) para obtener los nombres de los campos. También puede darle la (s) clave (s) primaria (s), pero para más detalles deberá seguir los consejos de pkh para usar el pragma table_info.

Cuestiones relacionadas