• Qt之操作数据库(SQLite)实例


    QtSql模块提供了与平台以及数据库种类无关的访问SQL数据库的接口,这个接口由利用Qt的模型视图结构将数据库与用户界面集成的一套类来支持。
    QSqlDatabase对象象征了数据库的关联。Qt使用驱动程序与各种数据库的应用编程接口进行通信。Qt的桌面版(Desktop Edition)包括如下一些驱动程序:

     驱动程序 数据库 
     QDB2 IBM DB2 7.1版以及更新的版本 
     QIBASE Borland InterBase
     QMYSQL MySql 
     QOCI 甲骨文公司(Oracle Call Interface)
     QODBC ODBC(包括微软公司的QSL服务)
     QPSQL PostgreSQL的7.3版以及更高版本 
     QSQLITE QSLite第3版 
     QSQLITE2 QSLite第2版

     QTDS Qybase自适应服务器 

    访问QSqlite数据库的实例:

    步骤:

    1、创建Qt控制台程序。

    2、在pro问价中添加QT +=sql;

    3、在main.cpp中添加如下代码

    #include <QCoreApplication>  
    #include <QSql>  
    #include <QSqlDatabase>  
    #include <QSqlError>  
    #include <QSqlQuery>  
    #include <QString>  
    #include <QFile>  
    #include <QDebug>  
    #include <QVariantList>  
      
    int main(int argc, char *argv[])  
    {  
        QCoreApplication a(argc, argv);  
      
        QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");  
      
        database.setDatabaseName("CashSystem.db");  
      
        if(database.open())  
        {  
            qDebug()<<"Database Opened";  
      
            QSqlQuery sql_query;  
            QString create_sql = "create table member (id int primary key, name varchar(30), address varchar(30))"; //创建数据表  
            QString insert_sql = "insert into member values(?,?,?)";    //插入数据  
      
            QString select_all_sql = "select * from member";  
      
            sql_query.prepare(create_sql); //创建表  
            if(!sql_query.exec()) //查看创建表是否成功  
            {  
                qDebug()<<QObject::tr("Table Create failed");  
                qDebug()<<sql_query.lastError();  
            }  
            else  
            {  
                qDebug()<< "Table Created" ;  
      
                //插入数据  
                sql_query.prepare(insert_sql);  
      
                QVariantList GroupIDs;  
                GroupIDs.append(0);  
                GroupIDs.append(1);  
                GroupIDs.append(2);  
      
                QVariantList GroupNames;  
                GroupNames.append("hsp");  
                GroupNames.append("rl");  
                GroupNames.append("spl");  
      
                QVariantList GroupAddress;  
                GroupAddress.append("南充");  
                GroupAddress.append("宝鸡");  
                GroupAddress.append("南充");  
      
                sql_query.addBindValue(GroupIDs);  
                sql_query.addBindValue(GroupNames);  
                sql_query.addBindValue(GroupAddress);  
      
                if(!sql_query.execBatch())  
                {  
                    qDebug()<<sql_query.lastError();  
                }  
                else  
                {  
                    qDebug()<<"插入记录成功";  
                }  
      
                //查询所有记录  
                sql_query.prepare(select_all_sql);  
                if(!sql_query.exec())  
                {  
                    qDebug()<<sql_query.lastError();  
                }  
                else  
                {  
                    while(sql_query.next())  
                    {  
                        int id = sql_query.value(0).toInt();  
                        QString name = sql_query.value(1).toString();  
                        QString address = sql_query.value(2).toString();  
                        qDebug()<<QString("ID:%1  Name:%2  Address:%3").arg(id).arg(name).arg(address);  
                    }  
                }  
            }  
        }  
        database.close();  
       // QFile::remove("CashSystem.db");  
        return a.exec();  
    } 

    4、运行截图:

    5、在项目的debug文件夹下,生成了对应的.db文件,使用navicat forSqlite工具打开,显示结果如下:

    参考链接:

    1、Qt之操作数据库(SQLite)实例

    2、Qt---自带的数据库QSQLITE

    3、在Qt中使用SQLite数据库

  • 相关阅读:
    二叉搜索树的后序遍历序列
    验证二叉搜索树
    合并二叉树
    工龄计算方案
    hadoop集群中动态添加节点
    java知识点
    Hadoop经典案例(排序&Join&topk&小文件合并)
    mysql学习
    大数据开发面试
    我保存的网址
  • 原文地址:https://www.cnblogs.com/rainbow70626/p/8411207.html
Copyright © 2020-2023  润新知