前端数据(写入/读取)后端数据库

一、前端数据写入后端数据库

1.前端数据通过from表单去提交

<form action="http://<% serverIp(); %>/action/sysInfo" method="get">
<input type=text class=inputText name=BaseStationName maxlength=254 size=32 value="+sysdata[5].value+">

2.后端通过QT调用websGetVar函数获取from表单中对应name的input数据

BaseStationNameey = websGetVar(wp,"BaseStationName", NULL);
LocaInfo = websGetVar(wp, "LocaInfo", NULL);
RebootTime = websGetVar(wp, "RebootTime", NULL);
DeviceTime = websGetVar(wp, "DeviceTime", NULL);

3.将获取到的数据写入到数据库里

写的比较简单,没有用INSERT INTO而是用SQL里的updata去实现数据的更新。updata优点就是前期只要把数据表的内容固定好,后期就只需要更新即可,前期麻烦(数据表小点还能接受,太大就麻烦了),后期省事,但缺点就是这样把东西写的死,后期难维护,更改起来费劲。如果用INSERT INTO虽然易维护,但每次插入都很麻烦,且数据在表中的位置经常发生变化,后面转化json读取困难。这里考虑做系统配置信息,数据量小,用updata做比较合适

bool DataBase::sysInfoDB(QString id, QString value)
{
    QString tabNmae="sys_param";
    QString redis_key = "";
    QSqlQuery query(DataBase::db);
//根据id所在位置插入数据
    QString str="UPDATE sys_param SET 'value'= '"+value+"'  WHERE id = '"+id+"';";
    FSU_Out<<str;
    query.prepare(str);
    if(!query.exec())
    {
        FSU_Out<<"Error: Fail to UPDATE. " << query.lastError();
        return false;
    }
    query.finish();
   return true;
}

二、前端读出后端数据库数据

1.直接用select把整个表的数据查出来,就三个字段,把表中数据都转化为json
int DataBase:: getSysInfo(QJsonArray &Sysinfolist,QString &err)
{
    QSqlQuery sql_query(DataBase::db);
    int ret = FSU_ERR_NONE;
    sql_query.exec("select * from sys_param");
    if(!sql_query.exec())
    {
        ret = FSU_ERR_QUERY_DB_ERROR;
        err = QString(sql_query.lastError().text());
        FSU_Err<<err;
        return ret;
    }
    while(sql_query.next())
    {
        QJsonObject jsonSys;
        jsonSys["id"]           = sql_query.value(0).toDouble();
        jsonSys["key"]          = sql_query.value(1).toString();
        jsonSys["value"]        = sql_query.value(2).toString();
        Sysinfolist.append(jsonSys);
    }
    err = "成功";
    return FSU_ERR_NONE;

}

2.完善json,写成模板函数
static int aspSysInfo(int jid, Webs *wp, int argc, char **argv)
{
    QJsonObject      json_ret;
    QString         result="",err="";

    QJsonArray Sysinfolist;
    int ret = 0;
    if(db){
        ret = db->getSysInfo(Sysinfolist,err);
        if(ret == FSU_ERR_NONE){
            json_ret["msg"]     = QJsonValue(Sysinfolist);
        }
        result = err;
    } else {
        result = "程序逻辑错误db为空";
        ret = FSU_ERR_PROGRAM_ABNORMAL;
    }

    json_ret["code"]    = QJsonValue(ret);
    json_ret["result"]  = QJsonValue(result);
    QJsonDocument doc;
    doc.setObject(json_ret);
    result = QString::fromUtf8(doc.toJson(QJsonDocument::Compact).constData());

    std::string str = result.toStdString();
    websWrite(wp,"%s",str.c_str());

    return 0;
}

json格式:
在这里插入图片描述
在这里插入图片描述

3.前端调用模板函数获取数据
var jsonsys=  <% aspSysInfo();%>
var sysdata=jsonsys.msg;


document.write("<table width='78%' border='1' cellpadding='0' style='border-collapse: collapse' bordercolor='#000000'>");

document.write("<tr>");
document.write("<td width='23%' nowrap class=tablediv1>厂家信息</td>");
document.write("<td width='77%' class=tablediv2_b>");
document.write(sysdata[9].value);
document.write("</td>");
document.write("</tr>");
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐