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

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

平台:vs2013+Qt

数据库驱动:sqlite

关键之处: PRAGMA table_info( strTableNmae )

源码分享:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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:获取数据库中的表名和表结构(源码共享)_第1张图片


Qt之操作数据库(SQLite)实例:http://blog.csdn.net/rl529014/article/details/52127173


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

你可能感兴趣的:(Qt编程)