Category: "DB-Tracklayer開發, MySQL, 數據庫, 網路, 編程, 開發" , Tags: C++, MFC, MySQL, PocketPC, WindowsMobile
這是たかぼー(Takabo)@programmer.
上次, 我寫了怎麼通過iPhone訪問MySQL服務器. 這次是WindowsMobile版本.
好像ろーる(Roll)也寫了類似的文章…但是, 嗯, 應該是我過慮的吧.
那, WindowsMobile. 它出售以後已經過了好幾年, 也升級換代了好幾次. 這點是跟iPhone不一樣的, 因此我認為某個人肯定已經開發過連接MySQL DB的方法. 我查找, 然後能容易地找到.
正式網站有面向.NET的程序庫叫MySQL Connector/NET, 它說它支持Compact Framework 2.0.
Compact Framework是功能有限, 還補充了移動機器需要的, 這樣在WindowsMobile上可以利用.NET Framework. 所以, 如果用.NET開發應用程序的話, 就馬上能訪問MySQL DB.
反正, 我們公司關於這項目的意向是利用C/C++語言, 於是我們不採用這方法.
(考慮操作速度, 內存消耗, 支持系統, 我們認為利用C/C++比較有利)
因此, 跟iPhone版本的時候一樣, 我們開始為了WindowsMobile調整MySQL Connector/C原代碼, 可是這時候比iPhone版本的時候要改的地方多的很.
為了編釋在WindowsMobile上, 我們挪用Windows一般版本的原代碼,
可是
- Windows Mobile的Win32 API只支持Win32 API原先版本的一部分
- 而且它只支持C標準庫的一部分
- 字符代碼只有unicode (基本上, API本身只支持unicode)
- 沒有當前目錄的概念
這樣, 跟Windows的差別很大, 會產生很多編釋錯誤.
我們要一個一個改.
為了每一個要寫代替代碼或者插入把多字節轉換到unicode的代碼.
不過, 改完全部的錯誤以後也還不會好好地開啟.
WindowsMobile有嚴格的對齊限制, 所以它把零碎的內存指針視為int讀取的時候產生運行錯誤. MySQL原代碼有這種轉換宏指令, 因此我們要採取別的方法替換它 (比方說讓他一次讀取一字節).
終於它發揮機能了.
這次, 我們要利用MFC, 所以做了面向MySQL C API的包裝類, 這樣完成了.


