分享:eVC中利用ADOCE访问Access数据库(转)
来源:互联网 发布:鞠婧祎 知乎 编辑:程序博客网 时间:2024/06/04 19:05
我刚刚开始开发PPC应用程序,考虑到自己对于C++语言比较熟悉,于是选择了eVC4.0 + Pocket PC 2003 SDK开发环境。感到欣喜的是,很多东西和VC++6.0几乎一样,上手也很快。但是在数据库发开方面,碰到了困难。
一开始,我选择了WinCE自带的数据库。实现起来也自然是非常简单。可是,到后来,发现WinCE自带的数据库和PC中的数据库同步存在一定的困难。首先,ActiveSync不支持;难道要自己写转换接口,好像有点行不通。于是,郁闷,一直在网上找相关资料。用Google搜,用baidu也搜。
最后,在zuilang的blog上,找到了希望的曙光。他的这篇名为“艰苦的过程:在evc中使用ADOCE的前期准备”的文章,为我指明了一条道路,可以用ADOCE来访问Access数据库。而Access数据库在PC上是比较通用的数据库类型,SQL Server 2000可以将其中的一些数据表转成后缀为.mdb的Access可以访问的数据库。
在该blog的回帖中,又有了意外的发现,书童Macintosh 在2005-12-27 11:22:32回复的帖子中,指明了EVC4.0+ADOCE3.1访问Access数据库的具体方法。看完帖子后,激动不已,马上着手实践。按照Macintosh的提示,一步一步进行下来,还是比较顺利。其实,Macintosh已经说的非常清楚了。我在这里只是做了验证性的工作而已。
1. 去微软网站下载ADOCE3.1的安装包,链接为:
http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=929bb147-281c-4d6e-a727-67271075fadb&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2fado%2fCE-PB%2f3.1%2fWCE%2fEN-US%2fadocepbzip.exe
名字非常的繁琐,幸好只是一个链接,直接点击就OK了。
2. VoAdo是VOS公司做的一个使用比较方便的ADOCONNECTION和ADORECOEDSET类,下载的链接为:
http://www.voscorp.com/products/developer/winmobile/voado/voado.zip
二、文件的生成、修改和下载
1. adoce31.h和adocec31.h文件的生成
在微软的adocepbzip安装包的adocepb/setup/Data Access 3.1/Program Files /DataAccess31 /INCLUDE目录下,有这样两个文件:adoce31.idl和adocec31.idl。在命令行状态下,进入该目录,然后执行midl adoce31.idl和midl adocec31.idl即可生成adoce31.h和adocec31.h文件。注意,一定要进到adocepb/setup/Data Access 3.1/Program Files /DataAccess31 /INCLUDE目录下,不然执行midl adoce31.idl和midl adocec31.idl会不成功,提示有可能是说'midl' 不是内部或外部命令,也不是可运行的程序或批处理文件。
2. VoAdo文件的修改
根据adoce31.h和adocec31.h文件,我们必须把下载的VoAdo进行适当的修改,将其中ado**30.h都改为ado**31.h。
在vorecordset.cpp文件中,将TCHAR* CVORecordset::g_ProgID = TEXT("ADOCE.Recordset.3.0")改为TCHAR* CVORecordset::g_ProgID = TEXT("ADOCE.Recordset.3.1")。
3. 下载.dll和regsvrce.exe到目标设备
将adocepb/setup/DataAccess3.1/Program Files /DataAccess31 /DEVICE /ARM /SA1100 /CE /RETAIL下的.dll文件复制到PPC的/Windows目录下。
将Program Files/Microsoft eMbedded C++ 4.0/EVC/WCE400/TARGET/ARMV4文件夹下的regsvrce.exe文件复制到设备中和数据库程序同一个文件夹下。
三、编程中注意事项
1. dll的注册
在我们的数据库程序中要使用VOADO的话,首先必须注册这些DLL,例如,在OnInitDialog()函数中,可以使用下面的语句来进行注册:
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//adoce31.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Adoxce31.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Adocedb31.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Adoceoledb31.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Msdaer.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//Msdaeren.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//msdadc.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
CreateProcess(_T("/RegSvrCe"),_T("/s /Windows//msdaosp.dll"),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
2. 文件的包括
将之前我们修改完成的adoce31.h和adocec31.h文件加入到我们的工程之中。
3. 目标设备中文件的放置
按照前面的要求,我们必须要把编译生成的可执行文件.exe、操作的数据库文件和regsvrce.exe放置在同一文件夹下,不然,数据库就无法访问。
4. 数据库操作语句之前,我是按照标准SQL语言来进行操作,发现不行。例如,我要从名为Account的数据库的PersonInfo表中选取name字段为“张明”的所有信息,按照标准的SQL语言,应该是这样子的:“select * from [Account].[dbo].[ PersonInfo] where [Account].[dbo].[ PersonInfo].[name] = ‘张明’ ”,从实际的调试情况来看,如果按照这种语法的话,是无法正确open的。后来,自己胡乱猜测,试验出来了,可以执行的语句如下:“select * from PersonInfo where name = ‘张明’ ”,当然,这只是我自己胡乱猜测的,不知道正确的语法应该如何,这还有待查证。
一、资源需求
- 分享:eVC中利用ADOCE访问Access数据库(转)
- 艰苦的过程:在evc中使用ADOCE的前期准备(从原来的blog转过来的)
- Unity3D 访问Access数据库(转)
- 使用ADOCE开发SQLCE数据库
- 使用ADOCE开发SQLCE数据库
- Qt中使用QODCB访问Access数据库
- asp.net 局域网中访问ACCESS数据库
- VC中访问Access数据库的方法
- 在ASP程序中访问Access数据库
- 在Flash电影中访问Access数据库
- 如何用eVC访问SQLCE数据库
- VC下利用ADO访问Access数据库(Use ADO)(转载)
- 用C#访问Access数据库 (转)
- JAVA访问Access数据库
- Java访问Access数据库
- c# 访问Access数据库
- C#访问Access数据库
- java访问access数据库
- JPEG算法概要
- 从微软的今天看软件测试的明天
- [转]结合php5与zend_search_lucene来创建一个全文搜索引擎
- jsf常见问题
- CRC校验源码分析
- 分享:eVC中利用ADOCE访问Access数据库(转)
- 指标分享3
- IT项目管理实践经验分享
- IBM解读“IT智慧” 造就新锐CIO依然任重道远
- db2 与 Oracle 的锁的区别和比较
- FastSpring学习笔记二(使用工具MyGeneration生成Model和NHibernate的代码 )
- 抬头望望,窗外已是夜幕降临。。。
- 最简单的Win32安装程序制作办法
- 解决 c3p0 和 MySQL 集成情况下,连接长时间闲置后重新使用时报错的问题