需求:获取指定数据库的结构。包括数据库中的所有表和表的结构(即表名,字段名,字段类型等信息)
平台:vs2013+Qt
数据库驱动:sqlite
关键之处: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
以上是内存溢出为你收集整理的Qt之sqlite:获取数据库中的表名和表结构(源码共享)全部内容,希望文章能够帮你解决Qt之sqlite:获取数据库中的表名和表结构(源码共享)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)