需求:获取指定数据库的结构。包括数据库中的所有表和表的结构(即表名,字段名,字段类型等信息)
平台: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
C++编程技术交流群:302558294(学习是一个互相帮助、不断进步的过程;不论你是大牛还是菜鸟,都期待你的加入)
原文地址:https://www.jb51.cc/sqlite/198746.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。