Qt之sqlite:获取数据库中的表名和表结构(源码共享)

需求:获取指定数据库的结构。包括数据库中的所有表和表的结构(即表名,字段名,字段类型等信息)

平台: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


C++编程技术交流群:302558294(学习是一个互相帮助、不断进步的过程;不论你是大牛还是菜鸟,都期待你的加入)

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能