zoukankan      html  css  js  c++  java
  • QT上的Mysql编程

    一.单个数据库单个表格

    1.建立并打开数据库

    "MyBlastRecord.db"为我们要创建的数据库名

    2.往数据库里创建表格

    recordview为我们创建表格名
    recordview(id int primary key, date text, num int, status int, BlastRecord_id int)
    括号里是我们表格里内容

    3.sql_query.exec("select * from recordview");

    访问表格里面的数据

    4.sql_query.next()

    表格的下一行,直到表格为空

    5.数据库关闭。

    //建立并打开数据库
        QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");
        database.setDatabaseName("MyBlastRecord.db");               //格式  (MyBlastRecord.db)
        if (!database.open())
        {
            qDebug() << "Error: Failed to connect database(MyBlastRecord)." << database.lastError();
        }
        //创建表格
        QSqlQuery sql_query = QSqlQuery(database);
        if(!sql_query.exec("create table recordview(id int primary key, date text, num int, status int, BlastRecord_id int)"))
        {
            qDebug() << "Error: Fail to create table.(updateBlastRecord)"<< sql_query.lastError();
        }
        sql_query.exec("select * from recordview");
        if(sql_query.exec())
        {
            while(sql_query.next())
            {
                Mode_temp=sql_query.value(3).toInt();
                if (sql_query.value(3).toInt() !=1)
                {
                    ret++;
                }
            }
        }
        database.close();

     二、单个数据库多个表格

    #include <QSqlRecord>
    #include <QSqlDriver>
    #include <QSqlField>
    
    #define CONNECTNAME "mysqlite_con"
    #define DATABASENAME "Launcher.db"
    #define DATABASEDRIVER "QSQLITE"
    
    DataManage* DataManage::m_pDataManage = Q_NULLPTR;
    QMutex  DataManage::m_mutex;
    
    DataManage::DataManage(QObject *parent) : QObject(parent)
    {
        if (QSqlDatabase::contains(CONNECTNAME)){
            m_dataBase = QSqlDatabase::database(CONNECTNAME);
        }else{
            m_dataBase = QSqlDatabase::addDatabase(DATABASEDRIVER,CONNECTNAME);
            m_dataBase.setDatabaseName(DATABASENAME);
        }
        if(!m_dataBase.isOpen())
            m_dataBase.open();
    
        QStringList tableList = m_dataBase.tables();
        QSqlQuery sqlQuery(m_dataBase);
    
        if(!tableList.contains("systemview")){
            if(!sqlQuery.exec("create table systemview(id int primary key, bdlight int, bklight int, bmtime datetime, longitude varchar(5), "
                              "latitude varchar(5), locattime datetime, style int, keyvoice int, charge int, "
                              "canswitch int, mA1data int, mA2data int, uAdata int, LG00Enable int, orgNum int, "
                              "StatusCheck int, PageStyle int, NeedAuth int, NeedGPS int, AuthNum int, DeviceID1 int, DeviceID2 int, "
                              "DeviceID3 int, DeviceID4 int, DeviceID5 int, SW int, DVStatus int)")){
    
                qDebug() << "Error: Fail to create table:systemview"<<sqlQuery.lastError();
            }
        }
       if(!tableList.contains("delayview")){
    
           if(!sqlQuery.exec("create table delayview(id int primary key, code text, time int, area int, hole int, authstatus int)")){
               qDebug() << "Error: Fail to create table:delayview"<<sqlQuery.lastError();
           }
       }
       if(!tableList.contains("recordview")){
    
           if(!sqlQuery.exec("create table recordview(id int primary key, date text,"
                             " num int, status int, BlastRecord_id int, Longitude text, Latitude text, bscanma int, bscanmv int, "
                             "scaningma int, scaningmv int, bchargema int, bchargemv int, chargingma int, chargingmv int, chargedma int, "
                             "bchargedmv int, bboomma int, bboomemv int, batenp int)")){
               qDebug() << "Error: Fail to create table:recordview"<<sqlQuery.lastError();
           }
       }
       if(!tableList.contains("recordlistview")){
    
           if(!sqlQuery.exec("create table recordlistview(id int primary key, code text, time int, blastrecord_id int)")){
               qDebug() << "Error: Fail to create table:recordlistview"<<sqlQuery.lastError();
           }
       }
    
       if(!tableList.contains("authheadview")){
    
           if(!sqlQuery.exec("create table authheadview(id int primary key, espdata text, "
                             "authid text, longitude varchar(5), latitude varchar(5),"
                             "radius int, starttime text, stoptime text, lgnumber int,"
                             " usefultime int, lgrang_number int, password_number int,downdata text)")){
               qDebug() << "Error: Fail to create table:authheadview"<<sqlQuery.lastError();
           }
       }
       if(!tableList.contains("authpasswordview")){
    
           if(!sqlQuery.exec("create table authpasswordview(id int primary key, LGPassword text, authfile_id int)")){
               qDebug() << "Error: Fail to create table:authpasswordview"<<sqlQuery.lastError();
           }
       }
       if(!tableList.contains("userInfo")){
    
           if(!sqlQuery.exec("create table userInfo(userId int primary key, orgId varchar(32), "
                             "realName nvarchar(32),orgName nvarchar(32),loginName varchar(32),userPasswd varchar(32))")){
               qDebug() << "Error: Fail to create table:userInfo"<<sqlQuery.lastError();
           }
       }
    
    }

     访问数据库的表格

    void DataManage::setDelayPara(LGMessageDef *LGMsg, int lg_num)
    {
        int i = 0, j = 0;
        char *code = new char[24];
    
        QSqlQuery sqlQuery(m_dataBase);
    
        sqlQuery.exec("select * from delayview");
        if(sqlQuery.exec())
        {
            while(sqlQuery.next())
            {
                j++;
            }
        }
        for (i = 0; i < lg_num; i++)
        {
            if (0 != ((LGMsg+i)->Det_status & mDesign))
            {
                continue;
            }
            DetidToString((LGMsg+i)->Uid, code);
            QString uid = QString(QLatin1String(code));
            int time = (LGMsg+i)->DT;
            int area = (LGMsg+i)->KW>>10;
            int hole = (LGMsg+i)->KW&0x3FF;
            int status = 1;
            if(((LGMsg+i)->Det_status & mAuthorize)==0)  //获取雷管当前状态
            {
                status=0;
            }
            if(false == m_dataBase.tables().contains(uid))
            {
                QString str=QString("INSERT INTO delayview VALUES(%1, "%2", %3, %4, %5, %6)").arg(j+1).arg(uid).arg(time).arg(area).arg(hole).arg(status);
                sqlQuery.exec(str);
                (LGMsg+i)->DesignDT=(LGMsg+i)->DT;
                (LGMsg+i)->DesignKW=(LGMsg+i)->DT;
                (LGMsg+i)->Det_status |=mDesign;
                j++;
            }
        }
        sqlQuery.exec();
        delete code;
        //return true;
    }
  • 相关阅读:
    Python之实现一个优先级队列
    java可变参数列表的实现
    static 关键字详解 static方法调用非static属性和方法
    this关键字详解
    vue自定义事件 子组件把数据传出去
    vue组件 Prop传递数据
    Vue 什么是组件
    vue v-model 表单控件绑定
    vue v-on监听事件
    vue v-if with v-for
  • 原文地址:https://www.cnblogs.com/zhouyuqing1024/p/13073375.html
Copyright © 2011-2022 走看看