按照功能分類,不管是直接的 insert/delete/update/select語句 還是 呼叫儲存過程,基本的功能 就是 增刪改查。又分為兩大類: (1)、查詢(會返回結果集的),(2)、非查詢(不會返回結果集的,只會返回生效的記錄的條數)。
注意(1): 雙方 傳送字串的時候,約定好 使用哪種字符集(ansi/utf8/gdk/...),窄/寬/變長 字符集...
注意(2): 約定-->字串 都使用 2個'\0' 最為結尾。
zc: unicode 算不算一種字符集?還是 一類字符集的統稱?
1、客戶端
(1)、int32(資訊總長)
(2)、int32(資訊的idx)
(3)、int32(語句型別,insert/delete/update/select/儲存過程)
(4)、字串(sql語句)
2、服務端
(1)、int32(資訊總長)
(2)、int32(資訊的idx)
(3)、int32([客戶端請求的]語句型別,insert/delete/update/select/儲存過程)
2.1、沒有結果集
(4)、int32(生效的記錄的條數)
2.2、有結果集
(4)、int32(返回的結果集中列的數量)
(5)、int32(返回的結果集中行的數量,即返回了幾條記錄)
(6)、[所有的 列名的資訊]
(6.1)、int32(第?列的 列名資訊的長度)
(6.2)、[第?列的 列名資訊]
(6.2.1)、int32(指明該列的資料型別,int/float/字串/...)
(6.2.2)、字串(列名)
(7)、[結果集中 第?條 記錄的資訊]
(7.1)、int32(該條記錄中 第?列的 資料的長度)
(7.2)、byte陣列(該條記錄中 第?列的 資料。根據 6.1和7.1 判斷資料的型別和值)
3、待考慮問題
3.1、客戶端 傳送批量sql語句
3.1.1、批量的 增/刪/改 語句 ==> 這個比較好處理 同(2.1)的處理方式一樣就行
3.1.2、批量的 查 語句 ==> 這個貌似沒法弄吧?是要弄乙個臨時表的效果,然後返回乙個最終的結果集?? --> 不知道實際情況下,會不會有這種需求?
3.1.3、批量的 增/刪/改/查 混在一起 ---> 不知道實際情況下,會不會有這種需求?
3.2、
4、解析返回的 結果集
偽**:
t***
byte msg; // 存放 服務端傳回來的 查詢的 所有資訊
int icolumnnum; // 結果集中 共有幾列
int irownum; // 結果集中 共有幾條記錄
listlistcolumn; // 存放 結果集 裡面的所有列的列名
listlistcolumntype; // 所有的列的資料型別
int offset; // 第i行第j列的資訊 在 msg中的偏移,也就是 指向(7.1)
// ... 用於 得到 第i行第j列的資訊 的各種 函式
bool getvalueint_byrowcol(int _irow, _icol, int* _piout)
// 函式 成功 則返回 true,失敗 則返回 false
// 若 _irow行 _icol列 的資料是 int型,則 *_piout 存放 *((int*)(&msg[offset[_irow][_icol]])),函式返回 true;否則函式返回false
bool getvalueptr_byrowcol(int _irow, _icol, char** _ppcout)
// 函式 成功 則返回 true,失敗 則返回 false
// 若 _irow行 _icol列 的資料是 字串型別,則 *_ppcout 存放 (char*)(&msg[offset[_irow][_icol]]),函式返回 true;否則函式返回false
5、
中介軟體 訊息中介軟體學習總結
冪等 在程式設計中.乙個冪等操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同。冪等函式,或冪等方法,是指可以使用相同引數重複執行,並能獲得相同結果的函式。這些函式 不會影響系統狀態,也不用擔心重複執行會對系統造成改變。例如,getusername 和settrue 函式就是乙個冪等函式....
訊息中介軟體的實現方案
訊息中介軟體對目前大中型網際網路來說是非常重要的,在業務資料流動中僅次於rpc服務呼叫,擔負著越來越複雜的 業務從主流程上解耦的重要責任 從目前網際網路對訊息中介軟體的需求來看應該分為兩種型別,一種是和錢相關的需求,一種是和錢無關的需求 和錢相關的需求訊息的可靠性是放在第一位的,和錢無關的需求是速度...
訊息中介軟體的實現方案
訊息中介軟體對目前大中型網際網路來說是非常重要的,在業務資料流動中僅次於rpc服務呼叫,擔負著越來越複雜的 業務從主流程上解耦的重要責任 從目前網際網路對訊息中介軟體的需求來看應該分為兩種型別,一種是和錢相關的需求,一種是和錢無關的需求 和錢相關的需求訊息的可靠性是放在第一位的,和錢無關的需求是速度...