簡化服務端協議處理的CDbHelper類

2021-06-14 05:37:45 字數 1645 閱讀 4634

1.類定義

/// 表字段與umx項(包括引數和行集列)對映項定義

struct cfield2umxitem ;

/// 表操作helper,適用於基於umx協議時服務端資料庫處理(查詢,新增,修改),可簡化**

class cdbhelper

cdbhelper(cfield2umxitem *vmi,unsigned int size)

void attach(cfield2umxitem *vmi,unsigned int size)

/// 把umx訊息與表繫結,用於新增,修改資料

int bind(itablehandler *th,cmsg *msg);

///< 生成輔助生成select欄位的字串,用於從協議項(如引數名稱)生成查詢語句

int genfldstring(const char *alias,string &ret_val,char *fld,...) ;

};2.使用示例:

///< 商品資訊表字段與協議資料項對映表

cfield2umxitem goods_para_map= ,///**商gln              

,///    商品條碼              

,///    **商產品**  

,///    商品名稱(中文)  

};int test() {

cdbhelper db_helper;

///< 與對映表關聯

db_helper.attach(goods_para_map,sizeof(goods_para_map)/sizeof(goods_para_map[0]));

///< 用法1: 協議引數繫結到表字段(手動)

itablehandler* th = cbasepluginmodule::db_helper_->newtablehandler(pdbor, "tb_3350");

auto_pointer_nodeclare(itablehandler,th);

th->bindfield(db_helper.findfield("gln"),msg,"gln");

th->bindfield(db_helper.findfield("gtin"),msg,"gtin");

th->bindfield(db_helper.findfield("pcode"),msg,"pcode");

th->bindfield(db_helper.findfield("name"),msg,"name");

///< 用法2:自動與訊息的所有引數繫結

db_helper.bind(th,msg);

/// 對於不在umx訊息中的列或者需要對引數進行處理的,可手動繫結

///< 用法3:  根據指定的協議項名稱生成查詢的select欄位列表.

string fld_str;

int ret = db_helper.genfldstring(0,fld_str,"rstatus","status","regtime",0);

string sql;

sql = logmsg("select %s from tb_3350",fld_str.c_str());

return 0;

3.最簡**示例

以下是處理商品註冊協議的函式:

服務端驗證的問題處理

在使用服務端驗證的時候,因為各種需求的不同,可以用作一下的幾個處理。使用sql語句的驗證 就是在寫sql語句的時候,進行使用者名稱和密碼的匹配查詢。如 where name and password 在客戶端請求時,在servlet層獲取使用者名稱和密碼引數。並呼叫該方法,如果返回有值,則驗證通過。...

tcp協議服務端實現併發

socket 在 tcp 協議下通訊 客戶端 import socket 建立客戶端tcp協議通訊 c socket.socket 與指定服務端握手 c.connect 127.0.0.1 8080 通訊迴圈 while true 向服務端傳送資訊 msg input if len msg 0 co...

71 基於UDP協議的服務端

server.py 1 可靠性 tcp協議是可靠協議 對方必須恢復乙個ack確認訊息,才會將自己的這端端資料從記憶體中刪除 udp協議不可靠 2 有無鏈結 tcp有鏈結,udp無連線 3 傳輸資料的效率 udp更高 4 粘包問題 udp協議稱之為資料報協議,每次傳送都是乙個完整的資料報,乙個傳送唯一...