需求:获取指定数据库的结构。包括数据库中的所有表和表的结构(即表名,字段名,字段类型等信息)
平台:vs2013+Qt
关键之处:PRAGMA table_info( strTableNmae )
源码分享:
#include <QtCore/QCoreApplication> #include <QsqlDatabase> #include <Qsql> #include <QString> #include <QStringList> #include <QDebug> #include <QStringListIterator> #include <QsqlQuery> #include <QsqlError> bool outPutTableInfo(QString tableNmae); bool outputDatabaseInfo(QsqlDatabase databaseName); int main(int argc,char *argv[]) { QCoreApplication a(argc,argv); QsqlDatabase database = QsqlDatabase::addDatabase("QsqlITE"); database.setDatabaseName("cashregistersystem.db"); outputDatabaseInfo(database); return a.exec(); } bool outputDatabaseInfo(QsqlDatabase database) { if (database.open()) { qDebug() << "Open database success!"; QStringList tables = database.tables(); //获取数据库中的表 qDebug() << QString::fromLocal8Bit("表的个数: %1").arg(tables.count()); //打印表的个数 QStringListIterator itr(tables); while (itr.hasNext()) { QString tableNmae = itr.next().toLocal8Bit(); qDebug() << QString::fromLocal8Bit("表名:")+ tableNmae; outPutTableInfo(tableNmae); } } else { qDebug() << "Open database Failed!"; return false; } return true; } bool outPutTableInfo(QString tabNmae) { QsqlQuery query; QString strTableNmae = tabNmae; QString str = "PRAGMA table_info(" + strTableNmae + ")"; query.prepare(str); if (query.exec()) { while (query.next()) { qDebug() << QString(QString::fromLocal8Bit("字段数:%1 字段名:%2 字段类型:%3")).arg(query.value(0).toString()).arg(query.value(1).toString()).arg(query.value(2).toString()); } } else { qDebug() << query.lastError(); return false; } return true; }
运行截图:
Qt之操作数据库(SQLite)实例:http://blog.csdn.net/rl529014/article/details/52127173