【文章內(nèi)容簡(jiǎn)介】
用戶確認(rèn)物品操作流程圖GC已經(jīng)在某個(gè)HS里點(diǎn)擊購(gòu)買結(jié)算HS請(qǐng)求DS進(jìn)行結(jié)算操作圖8 用戶購(gòu)買結(jié)算操作流程圖GC已經(jīng)在某個(gè)HS里HS請(qǐng)求DS進(jìn)行贈(zèng)送操作圖9 用戶贈(zèng)送禮物操作流程圖GC已經(jīng)在某個(gè)HS里收到禮物界面中HS請(qǐng)求DS進(jìn)行接收操作圖10 用戶接收禮物操作流程圖GC已經(jīng)在某個(gè)HS里收到禮物界面中丟棄禮物HS請(qǐng)求DS進(jìn)行丟棄禮物操作圖11 用戶丟棄禮物操作流程圖GC已經(jīng)在某個(gè)HS里HS請(qǐng)求DS進(jìn)行查詢禮物信息操作 圖12 用戶查詢禮物操作流程圖用戶一局游戲結(jié)束后用戶的各種游戲信息會(huì)得到更新GS將這些數(shù)據(jù)傳給HSHS請(qǐng)求DS進(jìn)行數(shù)據(jù)更新操作并將數(shù)據(jù)傳給DSDS對(duì)DB進(jìn)行相應(yīng)的數(shù)據(jù)更新操作操作完成后將更新后的數(shù)據(jù)傳回HS如圖413圖13 游戲GC已經(jīng)在某個(gè)HS里退出游戲圖14 用戶42 將MySQL C API封裝成易于使用的數(shù)據(jù)庫(kù)接口 MySQL C API 概述與其他很多同類型的商業(yè)軟件不同MySQL通過(guò)一系列的API向開發(fā)者開放自己的內(nèi)核因此使他們能夠自由地選擇自己的語(yǔ)言創(chuàng)建數(shù)據(jù)庫(kù)驅(qū)動(dòng)的應(yīng)用程序MySQL API可以為開發(fā)者提供一些具體能力下面分別簡(jiǎn)要予以介紹鏈接管理在一個(gè)應(yīng)用程序能夠與數(shù)據(jù)庫(kù)交互并且對(duì)其中保存的數(shù)據(jù)進(jìn)行查詢之前必須首先建立與數(shù)據(jù)庫(kù)服務(wù)器的連接MySQL API包含了專門針對(duì)應(yīng)用程序連接到MySQL數(shù)據(jù)庫(kù)服務(wù)器的一系列功能可以提供各種申請(qǐng)證書并且為以后的通信開放一個(gè)渠道一旦所有通信完成API還提供了一些功能來(lái)終止連接和釋放被使用的內(nèi)存清除事件實(shí)施查詢和處理結(jié)果一旦連接建立應(yīng)用程序可以向服務(wù)器發(fā)送查詢并檢索結(jié)果MySQL API提供了很多功能來(lái)簡(jiǎn)化這個(gè)過(guò)程包括執(zhí)行單個(gè)查詢或者作為一個(gè)事務(wù)塊的查詢功能檢索和處理記錄集合收集來(lái)自集合的具體記錄或來(lái)自記錄的具體字段等報(bào)告錯(cuò)誤MySQL API還提供了基本錯(cuò)誤報(bào)告能力當(dāng)連接或查詢出現(xiàn)問(wèn)題時(shí)能向調(diào)用者傳遞錯(cuò)誤代碼和信息除此之外API還允許調(diào)用者訪問(wèn)詳細(xì)的排錯(cuò)和管理信息包括當(dāng)前服務(wù)器狀態(tài)和所有活動(dòng)過(guò)程列表等輔助功能除了前面介紹的各種功能外MySQL API還可以提供很多所謂的管理功能包括返回服務(wù)器的當(dāng)前狀態(tài)打開連接的數(shù)量得到處理的查詢數(shù)量服務(wù)器版本等列出可以使用的數(shù)據(jù)庫(kù)表字段和過(guò)程等管理字符集提供詳細(xì)的診斷和排錯(cuò)信息通過(guò)關(guān)閉不活動(dòng)的連接和終止不活動(dòng)的過(guò)程來(lái)清理沒有使用的內(nèi)存關(guān)閉重啟或重載服務(wù)器等MySQL為很多不同的編程語(yǔ)言開放了API使得可以使用自己選擇的語(yǔ)言編寫數(shù)據(jù)庫(kù)驅(qū)動(dòng)的應(yīng)用程序目前MySQL提供的接口API編程語(yǔ)言有CJavaPHPPerlPythonODBCRubyEiffel和Tcl等應(yīng)確保在構(gòu)建自己的MySQL應(yīng)用程序時(shí)不會(huì)因缺少選擇而造成問(wèn)題因?yàn)镸ySQL是用C語(yǔ)言寫成的所以對(duì)MySQL來(lái)說(shuō)顯然C語(yǔ)言的API是功能最全面的一種C語(yǔ)言的API通過(guò)libmysqlclient庫(kù)與MySQL發(fā)布捆綁在一起并且可以 被MySQL附帶的所有命令行工具使用這些工具對(duì)于C開發(fā)者來(lái)說(shuō)是理解API精髓的一個(gè)豐富的信息來(lái)源MySQL提供的C API由一組函數(shù)以及一組用于函數(shù)的數(shù)據(jù)類型組成這些函數(shù)與MySQL 服務(wù)器進(jìn)行通信并訪問(wèn)數(shù)據(jù)庫(kù)可以直接操控?cái)?shù)據(jù)庫(kù)因而顯著地提高了操控效能C API數(shù)據(jù)類型包括MYSQL數(shù)據(jù)庫(kù)連接句柄MYSQL_RES查詢返回結(jié)果集MYSQL_ROW行集MYSQL_FIELD字段信息MYSQL_FIELD_OFFSET字段表的偏移量my_ulonglong自定義的無(wú)符號(hào)整型數(shù)等C API提供的函數(shù)包括mysql_close mysql_connect mysql_query mysql_store_result mysql_init 等其中mysql_query 最為重要能完成絕大部分的數(shù)據(jù)庫(kù)操控C API通過(guò)兩個(gè)組件實(shí)現(xiàn)頭文件mysqlh包含結(jié)構(gòu)和功能說(shuō)明Mysql庫(kù)libmysqlclient Unix 或 mysqlclientlib Windows 包括C的實(shí)際功能C API描述初始化MYSQL結(jié)構(gòu)mysql_init mysql mysql 類型為 MYSQL建立到服務(wù)器連接mysql_real_connect mysql host user password db1 0 NULL 0 采用默認(rèn)值的三個(gè)參數(shù)分別為連接MySQL服務(wù)器時(shí)使用的端口連接MySQL服務(wù)器時(shí)使用的套接字控制客戶機(jī)行為使用的一個(gè)或多個(gè)可選標(biāo)志如果連接成功將返回一個(gè)句柄連接失敗將返回假選擇數(shù)據(jù)庫(kù)mysql_select_db mysql db_name 查詢實(shí)施mysql_query mysql query_string 對(duì)Select查詢返回的結(jié)果集處理MYSQL_RES result mysql_store_result mysql 將查詢的結(jié)果保持到變量result如果mysql_query 執(zhí)行出錯(cuò)用mysql_store_query 函數(shù)取結(jié)果集將返回NULL給result如果客戶機(jī)內(nèi)存不大可以每次檢索一行記錄mysql_use_result int numRows mysql_num_rows result 檢驗(yàn)結(jié)果集行數(shù)int numFields mysql_num_fields result 檢驗(yàn)結(jié)果集列數(shù)MYSQL_ROW row mysql_fetch_row result 從結(jié)果集讀取一行記錄MYSQL_FIELD field mysql_fetch_field result 返回字段屬性詳細(xì)信息如字段名類型長(zhǎng)度MYSQL_FIELD fields mysql_fetch_fields result 返回MYSQL_FIELD結(jié)構(gòu)的數(shù)組每個(gè)字段針對(duì)一個(gè)結(jié)果集合mysql_free_result result 使用完后要釋放結(jié)果集變量空間INSERTUPDATEDELETE等操作的結(jié)果處理mysql_affected_rows mysql 返回受影響的記錄數(shù)涉及結(jié)果集處理的輔助函數(shù)MYSQL_ROW_OFFSET STDCALL mysql_row_seek MYSQL_RES resultMYSQL_ROW_OFFSET offset 跳至該具體行MYSQL_FIELD_OFFSET STDCALL mysql_field_seek MYSQL_RES result MYSQL_FIELD_OFFSET offset 跳至該行具體列MYSQL_ROW_OFFSET STDCALL mysql_row_tell MYSQL_RES res 返回字段列表中字段游標(biāo)當(dāng)前位置MYSQL_FIELD_OFFSET STDCALL mysql_field_tell MYSQL_RES res 返回結(jié)果集中行游標(biāo)當(dāng)前位置unsigned long STDCALL mysql_fetch_lengths MYSQL_RES result 當(dāng)前行的字段值長(zhǎng)度my_ulonglong STDCALL mysql_insert_id MYSQL mysql 返回產(chǎn)生ATUO_INCREMENT字段的最后ID錯(cuò)誤處置unsigned int STDCALL mysql_errno MYSQL mysql 錯(cuò)誤號(hào)const char STDCALL mysq