1. 程式人生 > 其它 >根據需要資料庫的內容,封裝增刪改查的sql函式

根據需要資料庫的內容,封裝增刪改查的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");