• 根据需要数据库的内容,封装增删改查的sql函数


    说明:数据库存储的内容可以看做为二维数组,使用QMAP方法进行存储;也可以看做是将数据库表的字段封装成类,使用QLIST进行操作

    代码实现功能说明

    数据库设计表名:user_task

     

    任务节点:

    task_node.h

    #ifndef TASK_NODE_H
    #define TASK_NODE_H
    #include <QString>
    
    class task_node
    {
    public:
        task_node();
        int task_id; //任务id
        QString task_type;//任务类型
        QString g_time;//任务生成时间点,系统时间
        QString s_time;//任务开始时间
        QString e_time;//任务结束时间点
        QString current_state;//当前状态
        QString destination_node1;//目标节点1
        QString destination_node2;//目标节点2
    
    };
    
    #endif // TASK_NODE_H

    node.cpp

    #include "task_node.h"
    
    task_node::task_node()
    {
    
    }

    数据库连接、封装的增删改查sql

    db_manager.h

    #ifndef DB_MANAGER_H
    #define DB_MANAGER_H
    # pragma execution_character_set("utf-8")
    #include "QtSql/QSqlDatabase"
    #include"QMessageBox"
    #include"QtSql/QSqlError"
    #include"QSqlQuery"
    #include<QDebug>
    #include<QList>
    #include<db_map_node.h>
    #include "task_node.h"
    class db_manager
    {
    public:
        db_manager();
       bool db_connect(QString,QString,QString,QString);
        //////task/////
        /*任务的链表形式*/
        QList<task_node> *task_search;
        /*查询*/
        QList<task_node> task_search_id(QString);
        /*更新*/
        bool task_update(QString,QString,QString,QString);
        /*增加*/
        bool task_insert(QString,QString,QString,QString,QString,QString,QString,QString);
        /*删除*/
        bool task_delete(QString);
    
    
    public:
        QSqlDatabase db;
    };
    
    #endif // DB_MANAGER_H

    db_manager.cpp

    #include "db_manager.h"
    # pragma execution_character_set("utf-8")
    db_manager::db_manager()
    {
        db = QSqlDatabase::addDatabase("QMYSQL");
    }
    
    bool db_manager::db_connect(QString host,QString user,QString Password,QString Database)
    {
        db.setHostName(host);
        db.setUserName(user);
        db.setPassword(Password);
        db.setDatabaseName(Database);
        if(!db.open())
        {
            return false;
        }
        else
        {
            qDebug()<<"数据库连接成功!";
            return true;
        }
    
    
    }
    
    /*任务查询
    *SELECT 列名称 FROM 表名称;
    *SELECT*FROM 表名称 WHERE 列名称='某值';
    *SELECT*FROM user_task WHERE task_id='';
    *若task_id_temp==""时;表示SELECT*FROM user_task 整个表的内容
    */
    QList<task_node> db_manager:: task_search_id(QString task_id_temp){
    
        QList<task_node> list;
        QString selectContent;
        if(task_id_temp==""){
          selectContent = QString("select * from user_task");
        }else {
        selectContent = QString("select * from user_task where task_id='%1'").arg(task_id_temp);
    }
        task_node task_nodes;
    
        QSqlQuery sql_query(db);
        //查询所有数据
        sql_query.exec(selectContent);
        if(!sql_query.exec())
        {
        qDebug()<<sql_query.lastError();
        }
        else
        {
        while(sql_query.next())
        {
        int task_id = sql_query.value(0).toInt();
        QString task_type = sql_query.value(1).toString();
        QString g_time = sql_query.value(2).toString();
        QString s_time = sql_query.value(3).toString();
        QString e_time = sql_query.value(4).toString();
        QString current_state = sql_query.value(5).toString();
        QString destination_node1 = sql_query.value(6).toString();
        QString destination_node2 = sql_query.value(7).toString();
        task_nodes.task_id=task_id;
        task_nodes.task_type=task_type;
        task_nodes.g_time=g_time;
        task_nodes.s_time=s_time;
        task_nodes.e_time=e_time;
        task_nodes.current_state=current_state;
        task_nodes.destination_node1=destination_node1;
        task_nodes.destination_node2=destination_node2;
    
    //    qDebug()<<QString("task_id:%1    task_type:%2   ").arg(task_id).arg(task_type);
    //    qDebug()<<QString("g_time:%3     s_time:%4  e_time:%5").arg(g_time).arg(s_time).arg(e_time);
    //    qDebug()<<QString("current_state:%6     destination_node1:%7  destination_node2:%8").arg(current_state).arg(destination_node1).arg(destination_node2);
    
    //    qDebug()<<"查询结束";
    //    qDebug()<<"task_id"<<task_id<<"task_type"<<task_type<<
    //              "g_time"<<g_time<<"s_time"<<s_time<<"e_time"<<e_time<<
    //              "current_state"<<current_state<<"destination_node1"<<destination_node1<<"destination_node2"<<destination_node2;
    
        list<<task_nodes;
        }
    
        }
    //    qDebug()<<"qqqqq"<<list.size();
    //    qDebug()<<"11111"<<list.at(0).task_id;
          return list;
    }
    
    /*任务更新
    UPDATE user_task
    SET s_time='某值', e_time='某值',current_state
    WHERE task_id='某值';
    */
    bool db_manager::task_update(QString task_id_temp,QString s_time_temp,QString e_time_temp,QString current_state_temp){
    
         QString updateContent;
         if(s_time_temp==""){
            updateContent=QString("update user_task set  e_time='%1',current_state='%2' where task_id='%3'").arg(e_time_temp).arg(current_state_temp).arg(task_id_temp);
    
         }else {
            updateContent=QString("update user_task set  s_time='%1',current_state='%2' where task_id='%3'").arg(s_time_temp).arg(current_state_temp).arg(task_id_temp);
    }
         QSqlQuery sql_query(db);
         //查询所有数据
         if(!sql_query.exec(updateContent)){
           qDebug()<<"update false";
        return false;
         }
           qDebug()<<"update true";
        return true;
    
    }
    /*任务增加
    INSERT INTO user_task
    VALUES (value1,value2,value3,value4,value5,value6,value7);
    */
    bool db_manager::task_insert(QString task_id_temp,QString task_type_temp,QString g_time_temp,QString s_time_temp,QString e_time_temp,QString current_state_temp,QString destination_node1_temp,QString destination_node2_temp){
        QString insertContent;
        QString str1;
        QString str2;
        str1 = QString("insert into user_task values (");
        //insertContent=QString("insert into user_task values (");
        //insertContent.append("'%1','%2','%3','%4'.'%5','%6','%7','%8')").arg(task_id_temp).arg(task_type_temp).arg(g_time_temp).arg(s_time_temp).arg(e_time_temp).arg(current_state_temp).arg(destination_node1_temp).arg(destination_node2_temp);
        str2=QString("'%1','%2','%3','%4','%5','%6','%7','%8')").arg(task_id_temp).arg(task_type_temp).arg(g_time_temp).arg(s_time_temp).arg(e_time_temp).arg(current_state_temp).arg(destination_node1_temp).arg(destination_node2_temp);
       insertContent=str1.append(str2);
       qDebug()<<insertContent;
        QSqlQuery sql_query(db);
        //查询所有数据
        if(!sql_query.exec(insertContent)){
          qDebug()<<"insert false";
       return false;
        }
         qDebug()<<"insert true";
       return true;
    }
    /*任务删除
    DELETE FROM user_task
    WHERE task_id='某值';
    */
    bool db_manager::task_delete(QString task_id_temp){
    
        QString deleteContent=QString("delete from user_task where task_id='%1'").arg(task_id_temp);
        QSqlQuery sql_query(db);
    
        //查询所有数据
        if(!sql_query.exec(deleteContent)){
           qDebug()<<"delete false";
       return false;
        }
         qDebug()<<"delete true";
       return true;
    
    }

    mainwindow.cpp调用

    db_manager *a=new db_manager();
        /*任务调用数据库的方法示例*/
        a->db_connect("127.0.0.1","root","123456","user");
        a->task_search_id("1");
        a->task_update("1","10:00","","1");
        a->task_update("1","","10:50","2");
        a->task_insert("6","充电","2021-07-29","","","1","2","3");
        a->task_delete("1");
  • 相关阅读:
    ping
    android Handler总结
    配置网络测试环境的批处理
    shell 的选项解析
    [转] Linux 中共享库的搜索
    SecureCRT 脚本一则(0720.Rev.1)
    使用 Wget 完成自动 Web 认证(推 portal)
    shell 选项解析之需求一:多路径自动补全
    getopts 的简单模拟(09.12 Rev)
    ThinkPHP框架使用心得三 RBAC权限控制(2)简要原理
  • 原文地址:https://www.cnblogs.com/gjianli/p/15079562.html
Copyright © 2020-2023  润新知