微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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(学习是一个互相帮助、不断进步的过程;不论你是大牛还是菜鸟,都期待你的加入)

原文地址:https://www.jb51.cc/sqlite/198746.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐