取消資料庫非同步操作的程式設計說明

2021-05-21 19:24:32 字數 868 閱讀 6656

在使用者與系統的互動過程中,允許使用者放棄請求的操作有時是必要的,尤其是涉及耗時的資料庫操作,需要長時間等待的時候.

可改善對使用者的響應,避免資料庫在已放棄操作上的沒有價值的開銷.

客戶端實現

.對可取消的操作指定訊息命令字.

服務端實現

.服務端決定哪些訊息需要非同步處理

.服務端以連線控制代碼和訊息命令字作為唯一鍵

.對於取消掛起的操作,各種資料庫實現不同,通過資料庫擴充套件模組實現.

.限制:

--只支援查詢命令

--當前連線上只支援乙個可取消操作

--只支援mysql,sql server.

取消非同步操作實現方式分別為:

sql server: ado recordset的cancel方法

mysql: (1) select connect_id() (2) kill %d (3) reconnect

以下是服務端使用的示例**:

///< 記錄非同步操作環境

pdbor->getdbext()->setasyncctx(casyncctxkey(in->connid[0],in->msg->getcmdserial()),prs);

///< 檢查查詢狀態,此操作可能被其它執行緒取消

long state = adstateexecuting;

do while(state==adstateexecuting);

pdbor->getdbext()->removeasyncctx(); ///< 取消該執行緒上的非同步操作等待

pdbor->releaserecordset(prs);

return 0;

}.取消非同步查詢

return 0;

}

資料庫非同步操作 ADODB

在vc或vb中需要耗時的查詢時,客戶一般需要等待很長一段時間,這種情況客戶是無法容忍而且也無法取消,那麼怎樣麼辦呢.1.首先採用多執行緒的方式,工作執行緒與ui執行緒分開,工作執行緒處理完畢時向主線程發消處理完畢的訊息 另一種方法採用向視窗傳送訊息.注意這裡是寄送的方式,不要問我為什麼,我也不會告訴...

VC資料庫ADO操作的說明

連線sql資料庫實用下列 connectionptr pmyconnect null hresult hr pmyconnect.createinstance uuidof connection if failed hr return bstr t strconnect provider sqlol...

資料庫同步非同步操作的使用場景

非同步同步 是針對資料來說的 對乙個資料的查詢如果是非同步操作 那麼對乙個資料的修改也最好要用非同步操作 以保證指令按順序到達 比如下面乙個場景 玩家a重複購買10積分的物品兩次 且玩家只有10積分 如果是同步查詢 非同步修改的話 很可能會出現玩家a的資料庫積分變成負數的情況 上面這個情況 因為第乙...