加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 19:28:06 所属栏目:百科 来源:网络整理
导读:需求:获取指定数据库的结构。包括数据库中的所有表和表的结构(即表名,字段名,字段类型等信息) 平台:vs2013+Qt 数据库驱动:sqlite 关键之处:PRAGMA table_info( strTableNmae ) 源码分享: #include QtCore/QCoreApplication#include QSqlDatabase#in

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读