非直連方式下C語言程式與資料庫的訊息互動流程

2022-04-09 07:53:17 字數 1355 閱讀 8379

【文章摘要】

在《如何在c語言裡面執行sql語句?》(一文中,我介紹了直連方式下c語言程式與資料庫打交道的過程。

本文簡單介紹非直連方式下c語言程式與資料庫的訊息互動的流程,供大家參考。

一、訊息互動總體流程

非直連方式,也稱非同步方式。顧名思義,在這種方式下,c程式不直接與資料庫打交道,而是通過乙個獨立的第三方模組與資料庫進行訊息互動。訊息互動的總體流程如圖1所示。

圖1 訊息互動的總體流程

該方式的優點如下:

第一,c程式不必一直等待資料庫的返回結果,可以繼續執行後面的流程,這在一定程度上提高了程式的執行效率。

第二,c程式只需將包含sql語句的訊息發給第三方模組即可,不必實現連線資料庫、在資料庫中執行sql語句等較為複雜的功能,這在一定程度上簡化了c程式的操作流程。

該方式的缺點如下:

第一,系統架構較為複雜,需要準確配置c程式與第三方模組的鏈路,同時要保證第三方模組功能的正常性。

第二,c程式要準確定義並解析訊息序列號(會話號),否則極有可能會導致第三方模組返回的結果出現混亂,這增加了c程式時序處理的複雜性。

二、訊息互動流程

c程式向第三方模組發訊息的流程如圖2所示。

圖2 c程式向第三方模組發訊息的流程

從圖2中,我們可以看出:

第一,c程式發給第三方模組的sql語句必須要符合語法規則,否則,即使是訊息傳送成功,也不會返回正確的執行結果。

第二,為了正確接收到第三方模組返回的訊息,c程式要定義好訊息事件號(第三方模組在返回執行結果時會原樣返回該事件號),同時也要分配好會話號(第三方模組在返回執行結果時會原樣返回該會話號)。這樣可以保證c程式對第三方模組返回訊息的解析的正確性。

第三,當向第三方模組發訊息的函式執行失敗之後,不要再繼續執行後續流程,同時要列印詳細的失敗日誌,供檢視問題所用。

第四,當向第三方模組發訊息的函式執行成功之後,c程式可以繼續執行後續流程,但分配的會話號不要釋放掉了。

c程式接收第三方模組返回訊息的流程如圖3所示。

圖3 c程式接收第三方模組返回訊息流程

從圖3中,我們可以看出:

第一,會話號是保證c程式處理時序的關鍵。在程式中,會話號一般是儲存在全域性的會話快取中的。

第二,只有當向第三方模組發訊息時的會話號與第三方模組返回訊息時的會話號一致時,c程式才能進行對應的處理。當c程式利用sql語句執行結果走完後續流程之後,一定要釋放該會話號。

第三,c程式是根據事件號進入對應的流程進行處理的,為了確保流程處理的正確性,在向第三方模組發訊息時一定要定義好清晰的、容易區分的事件號。

三、總結

在實際的軟體開發專案中,c語言程式和資料庫打交道可謂是家常便飯。是選擇直連的方式?還是選擇非直連的方式?這就要綜合專案的實際情況、已有模組安裝情況等進行合理的選擇。

C 直連Oracle資料庫(免安裝)

在日常開發過程中,經常會遇到要連線oracle資料 網上找了很多方法,有的方法是要安裝orcale client,這裡說的當然是免安裝的方法,只需要引用乙個dll檔案就ok了 dll檔名 oracle.manageddataaccess.dll 獲取方法 1 可以從oracle官網裡慢慢找。我是找了...

C語言與資料庫連線

mysql stumysql mysql res stures mysql row row 連線資料庫 stumysql mysql init null mysql real connect stumysql,localhost root 123456 student 0,null,0 讀出資料庫資...

C 事務提交 非資料庫

net 2.0開始支援 static void main string args 獲取事務id transaction.current.transactioninformation.localidentifier 巢狀事務 static void main string args ts.comple...