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原先版本的一部分I
- 而且它只支持C标准库的一部分
- 字符代码只有unicode (基本上, API本身只支持unicode)
- 没有当前目录的概念
这样, 跟Windows的差别很大, 会产生很多编释错误.
我们要一个一个改.
为了每一个要写代替代码或者插入把多字节转换到unicode的代码.
不过, 改完全部的错误以后也还不能好好地开启.
WindowsMobile有严格的对齐限制, 所以它把零碎的内存指针视为int读取的时候产生运行错误. MySQL源代码有这种转换宏指令, 因此我们要采取别的方法替换它 (比方说让它一次读取一字节).
终于它发挥作用了.
这次, 我们要利用MFC, 所以做了面向MySQL C API的包装类, 这样完成了.


