Archive

Posts Tagged ‘adoce’

ADOCE打包到WinCE NK.bin镜像中

December 22nd, 2008 will No comments

WinCE下SQLCE开发初探中说明的方式只能作为调试程序之用,其实每次调试都需要配置一次也够麻烦的,下面就讲一下如何将ADOCE的dll文件打包到内核NK中,并将数据库文件存在硬盘(CF卡)上,实现数据永久保存地方法。

一、需要将ADOCE的dll库文件打包到WinCE的windows目录下

1、 在菜单的Platform下选择Setting,再选择Custom Build Actions选项卡,在Build step:下选择Pre-Make Image选择New,然后在弹出对话框中输入

Add Files to NK.bin

copy <Path>\<File name> %_FLATRELEASEDIR%\<File name>

<File name>换成需要添加的文件
%_FLATRELEASEDIR%环境变量表示当前工程的release目录

确认后保存

2、在菜单的View下选择Parameter View,双击打开Project.bib文件进行编辑,在Files session下添加

FILES
; Name Path Memory Type
; ————– ——————————– —— —- ——————————–
<File name> $(_FLATRELEASEDIR)\<File name> NK  S

$(_FLATRELEASEDIR)对应的目录和%_FLATRELEASEDIR%相同
例如:将D盘根目录下的adoce31.dll打包,
copy D:\ adoce31.dll %_FLATRELEASEDIR%\ adoce31.dll
adoce31.dll $(_FLATRELEASEDIR)\adoce31.dll        NK     S

保持对应关系一致就可以了。

然后Build and Sysgen(此时不必做,等后面修改完了一并Build and Sysgen)
这样包含的文件默认在NK.bin的windows目录下

如果追加了新的文件需要重新Build and Sysgen
我已经改过的project.bib和project.reg文件可以到这里下载

二、替换掉dllregister.exe

每次运行dllregister.exe都会弹出一个“注册成功”的确认对话框,相当不爽。不知道如何让它静默运行,直接修改注册表完成它的功能算了。将dllregister注册之前和之后的注册表用UltraEdit比较,找出不同的写入project.reg中。

三、将数据库文件放入硬盘

NK的内核是个ROM,每次操作完之后的数据都是写入内存中,重启之后就没有了。所以必须将数据库文件放入CF上(NK.bin文件之外)。

在wince 的os定制中打开Catalog 中的Device Drivers\Storage Devices, 然后选择ATAPI PCI/IDE Storage Block Driver,右键选择Add to OS Design。

在Core OS\Windows CE devices\File Systems and Data Store\Storage Manager, 然后选择 FAT File System.右键选择Add toOS Design。然后重新Build and Sysgen。

CF卡的容量不要超过2G,fat16最大只能支持2G空间

Build and Sysgen等待完成后,将mydata.sdf(数据库文件)拷贝到CF上。在中文WinCE系统下,程序中访问数据库文件的路径为 /硬盘/mydata.sdf。

Categories: 学习笔记 Tags: , , ,

WinCE下SQLCE开发初探

December 7th, 2008 will No comments

WinCE下数据库开发可以选择两个自带的数据库,一个是EDB,另一个为SQLCE。EDB不支持SQL语句,操作几乎是靠调用API,感觉极不方便,所以没有选用。SQLCE支持简单的SQL语句,比较灵活。

SQLCE的链接MS推荐使用OLEDB,但是以前没有用过,所以没有采用这中方法,而使用了ADO方式。网上关于WinCE ADOCE的资料也比较多。主要是使用VOADO,而实际使用的时候发现并非那么好用。后来有找到了一个voado的示例程序,仿照示例搞定了。论坛需要注册才能下载,我将程序上传到了纳米盘,点击直接SqlCeExaple.rar下载。作者将voado做了修改,程序是在arm平台下的,实际x86下也可以使用。在硬件仿真条件下通过remote file viewer将文件上传到对应的目录就可以使用数据库了。如何将adoce集成到内核中,请看ADOCE打包到WinCE NK.bin镜像中

SQLCE本身不支持top关键字,所以分页显示比较麻烦,我的解决办法是将数据全部读出来(数据记录不多),然后通过程序控制该显示哪几条记录。上述的voado当记录为空的时候,ISEOF()函数并不能返回真,这样当没有记录的时候可能会进入死循环,为避免这种情况,读取记录之前可以先获取记录的条数,如果有记录则继续读取,没有则直接返回。

Categories: 学习笔记 Tags: , ,