Window Mobile RDA数据库操作解决方案研究
一、RDA (Remote Data Access ) 远程数据访问
简单介绍:远程数据访问 (RDA) 使移动应用程序能够访问远程 SQL Server 数据库表中的数据,并将这些数据存储在本地 SQL Server Mobile 数据库表中。随后,该应用程序就可以读取和更新本地 SQL Server Mobile 数据库表。SQL Server Mobile 可以选择跟踪对本地表所做的所有更改。之后,应用程序可以将本地表中更改过的记录更新回 SQL Server 表。
在 SQL Server Mobile 中,将数据从 SQL Server 表传播至本地 SQL Server Mobile 表的过程称为“拉”数据。将本地 SQL Server Mobile 表中所做的更改传播回 SQL Server 表的过程称为“推”数据。
在不需要使用 SQL Server Mobile 合并复制的全部功能(包括冲突解决)时,适合使用 RDA。
RDA远程数据访问原理:SQL Mobile支持两种数据同步的方法:Remote data access(RDA)和Replication。这两种方法都支持从远程的SQL Server服务器中下载数据到设备端的SQL Mobile数据库中,在本地对数据进行浏览和修改,再将修改结果更新到SQL Server服务器中。RDA和Replication都需要配置SQL Mobile Server Tools,也就是说,必须要有一个运行IIS的Web Server。Server Tools的主要作用是将移动设备通过网络发送的数据库访问请求,转发给SQL Server数据库,并将结果集发送回移动设备中。移动设备使用RDA和Replication时,SQL Mobile只需要连接IIS上的Server Tools。而数据同步需要HTTP或HTTPS的网络连接支持。网络连接可以是无线局域网(Wi-Fi)、无线网或通过AtiveSync连接的PC网络。RDA使用了SQL Mobile中的三个组件:SQL Mobile Database Engine、SQL Mobile Client Agent和SQL Mobile Server Agent。RDA的运行过程如下图:
SQL Mobile Database Engine用于管理存储于SQL Mobile数据库中的数据。如果这些数据来自于远程SQL Server数据库,并且在调用Pull操作时设置了跟踪改变的选项,Database Engine还将跟踪整个程序运行过程中数据表的变化情况,比如insert、update和delete等操作。Database Engine将为每条记录维护更新记录。如果SQL Server数据表建有索引,那么RDA也支持在SQL Mobile数据表中建立索引。
RDA操作方法:1、Pull 方法:从远程 Microsoft SQL Server 数据库检索数据,并将该数据存储在位于本地 SQL Server Mobile 数据库内的单个表中。2、Push 方法:从本地跟踪的 SQL Server Mobile 表向原始的远程 SQL Server 表发回更改。3、SubmitSQL 方法:提交 SQL 语句,以在远程 SQL Server 数据库上执行。这三个 RDA 对象方法都包含 OLEDBConnectionString 属性。该属性提供了连接到远程 SQL Server 数据库时使用的 OLEDB 连接字符串。OLEDB 连接字符串提供连接信息,其中包括安全信息。若要使用 Push 方法,应用程序必须已经通过调用 RDA_TRACKOPTION 参数设置为 TRACKINGON 或 TRACKINGONWITHINDEXES 的 Pull 方法,创建了本地 SQL Server Mobile(*.SDF)。
二、调试平台的软件配置
1、SQL Server 和 SQL Server Compact Edition 之间复制数据,必须安装复制组件(Sqlce30setupen.msi)
2、Microsoft Visual Studio 2005 .Net framework2.0开发环境
3、Windows Mobile 5.0 Pocket PC SDK 虚拟设备
4、Microsoft SQL Server 2005 Mobile Edition 用于.SDF数据库创建
5、Microsoft SQL Server 2005 Compact Edition用于同步连接
6、Microsoft ActiveSync4.5同步器
7、Microsoft SQL Server 2005 Compact Edition 服务器工具
8、Microsoft SQL Server CE 2.0
9、Microsoft SQL Server2000 开发版+SP3补丁+SP4补丁
10、Windows Mobile 5.0 Emulator Images for Pocket PC – CHS
11、IIS6.0
特别说明:当在IE中输入http:// yourhostname /Compact/sqlcesa30.dll时,WEB中显示Microsoft SQL Server Compact Edition Server Agent(图1)和在Windows Mobile 5.0 Pocket PC中输入 http://yourhostname/Compact/sqlcesa30.dll时、WEB中同样显示Microsoft SQL Server Compact Edition Server Agent(图2)则说明同步成功。
图1
图2
三、常见问题解决方案
(1)ActiveSync无法启动提示"关键性通信服务启动失败"的解决办法
1、是将默认输入法设置回简体中文-美式键盘。或者紫光等可能不会出现冲突的输入法。
2、是防火墙:
允许以下程序
Wcesmgr.exe
Wcescomm.exe
Rapimgr.exe
3、打开如下端口
Inbound TCP:
990
999
5678
5721
26675
4、Outbound UDP:
567
方法二关键性通信服务启动失败
其实导致这个问题的原因被隐藏的很深,不过可以确定一点:一定是 Active Sync 和终端设备交换数据的端口被占用了。
至于哪些东西会占用端口,每个人电脑中安装的软件不同,所以无法一概而论。但是如果已经关闭了杀毒软件、防火墙还是无法解决该问题,那么就该考虑电脑是否中了病毒或者被一些“霸王”软件管制了。
比如我折腾了半天,在资源管理器里面看到 tcpipdog.dll 这个进程,将其结束以后,Active Sync 便起死回生。至于 tcpipdog.dll 是哪儿来的,呵呵,很不巧,源自 Dr.com,作用是控制 Socket 连接,应该是防止网络共享的一个系统文件(破东西真是万人恨)。
如果遇上这个问题的朋友恰好装了 Dr.com,那么不用大动干戈,将其卸载,"关键性通信服务启动失败"的问题将得到彻底的解决。
备注:怎样开启端口?
要手动打开端口,请按照下列步骤操作:
1. 单击开始,然后单击网上邻居。
2. 在网络任务下,单击查看网络连接。(或者,右键单击桌面上的网上邻居,然后单击属性。)
3. 右键单击用于 Internet 的连接,然后单击属性。
4. 单击高级选项卡,然后单击设置。
注意:如果设置按钮不可用,则此连接上未启用 Windows 防火墙,您无需打开任何端口(因为它们已经全部打开)。
5. 单击添加打开新端口。
6. 在说明框中,键入一个易记的名称。例如,键入文件共享:端口 188。
7. 在“您的网络上提供此服务的计算机名或 IP 地址”框中,键入 127.0.0.1。
注意:您可以指定内部计算机的 IP 地址。但通常情况下,请使用 127.0.0.1。
8. 在“外部端口”和“内部端口”框中,键入端口号。通常,此号码是相同的。
9. 单击 TCP 或 UDP,然后单击确定。
10. 为每个要打开的端口重复步骤 1 到步骤 9。
(2)windows mobile 5.0 PocketPC模拟器上网的同步设置
1、打开ActiveSync ,点击“文件”——>“连接设置”,在“允许连接到以下其中一个端口”下选择“DMA” 设置“这台计算机连接到”à单位网络。
2、打开 VS2005,点击菜单“工具”——>“设备仿真管理器”,选择一个windows mobile 5.0 PocketPC 模拟器。在右键菜单中点击“连接”。等模拟器启动后,再点击“插入底座”,此时,通过ActiveSync来连接到模拟器,并进行数据同步。
3、在模拟器中,点击“开始”——>“设置”,点击“连接”选项卡。
(1)选择“网卡”:
“我的网卡连接到”选“默认单位设置”。
在“点击适配器以修改设置:”下面选“AsyncMac NDISWAN Miniport”,选中“使用服务器分配的IP地址”,点击右上角的“ok”,提示“新设置将在下次使用适配器时应用。如果适配器当前插在设备中,请先移除,然后重新插入适配器以应用设置。”,点击“ok”,“ok”。
(2)在“连接”选项卡中选择“连接”:
在“高级”选项卡中,点击“选择网络”,在“在程序自动连接到Internet时,使用:”下面选“单位设置”,默认是“Internet设置”,然后,连续点击右上角的“ok”,“ok”,“X”返回。
4、此时,就可以上网了。依次点击“开始”——>“Internet Explorer”——>“收藏夹”——>“MSN Mobile”,就会出现页面了。如还打不开网页,可在“设备仿真器管理器”中选中该模拟器,先点击右键菜单中的“移除底座”,再点击“插入底座”,重新与ActiveSync连接一次,就没问题了。
(3)SQL Server CE 1.0 和更高版本客户端程序可能无法连接到 IIS 正在运行 Windows XP Service Pack 2 (SP 2) 的计算机上
解决方案若要解决此问题,您必须允许 Internet 用户访问 Web 服务器 (HTTP) 服务和安全 Web 服务器 (HTTPS) 服务运行 IIS 的计算机上。 为此,请按照下列步骤操作: 1.单击 开始 ,单击 运行 ,键入 firewall.cpl ,然后单击 确定 。 2.在 Windows 防火墙 对话框,单击 高级 选项卡。3.在 网络连接设置 框,单击您的计算机使用,连接,然后单击 设置 。4.在 高级设置 对话框,单击 Web 服务器 (HTTP) ,然后单击 安全 Web 服务器 (HTTPS) 。
(4)为何无法“配置发布,订阅服务器和分发...”?(提示“sql server复制不支持昵称,例如使用‘.’或者‘(local)’作为服务器名”)
你把服务器删除了 重新注册 注册的时候不要(local) 而是填win2000server
(5)在台式机上安装SQL Server Compact Edition
Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 是 Microsoft SQL Server 2005 Mobile Edition (SQL Server Mobile) 的下一版本。SQL Server Compact Edition 可用于台式机,不需要安装 Visual Studio 2005 或 SQL Server 2005。适用于台式机和 Tablet PC 的 SQL Server Compact Edition 安装程序 (SQLServerEv31-EN.msi) 中包含仅适用于台式机和 Tablet PC 计算机的运行时二进制文件。安装程序包含以下库:
SQLCESE30.DLL
SQLCEQP30.DLL
SQLCEME30.DLL
SQLCEOLEDB30.DLL(OLEDB 数据访问接口)
SQLCECA30.DLL
SQLCECOMPACT30.DLL
SQLCEER30xx.DLL
System.Data.SqlServerCe.dll(ADO.NET 数据访问接口)
适用于台式机和 Tablet PC 的 SQL Server Compact Edition 安装程序发行版不包括用于在移动设备或 SQL Server Compact Edition 服务器工具(也称为连接组件)上安装 SQL Server Compact Edition 的 CAB 文件。
安装要求
除非正在使用 OLEDB 数据访问接口,否则必须安装 Microsoft .NET Framework 2.0 或更高版本才能安装 SQL Server Compact Edition。可以从 .NET Framework 2.0 下载中心下载 .NET Framework 2.0。
由于此安装程序只包含运行时二进制文件,所以,在台式机和 Tablet PC 计算机上安装 SQL Server Compact Edition 时,不需要使用以下软件:
Internet 信息服务 (IIS) 5.x 或更高版本的 IIS(仅适用于 32 位)
ActiveSync 4.0 或更高版本
Internet Explorer 6.0
当在台式机和 Tablet PC 计算机上安装 SQL Server Compact Edition 时,不需要使用 Visual Studio 和 SQL Server。
重要事项:
若要在 SQL Server 和 SQL Server Compact Edition 之间复制数据,必须安装复制组件。有关安装 SQL Server 复制组件的详细信息,请参阅硬件和软件要求。还必须安装服务器工具 (Sqlce30setupen.msi)。有关服务器工具的详细信息,请参阅 Connectivity Tools(连接工具)。
安装位置
适用于台式机和 Tablet PC 计算机的 SQL Server Compact Edition 安装程序可在固定位置安装 SQL Server Compact Edition。固定位置安装为 SQL Server Compact Edition 提供了可服务性支持。SQL Server Compact Edition 安装程序将在全局程序集缓存 (GAC) 中安装托管程序集,如 System.Data.SqlServerCe.dll,并在注册表中注册本机 DLL,如 OLE DB 访问接口 (sqlceoledb30.dll)。由于安装了注册表,因此用户只能利用管理凭据安装 SQL Server Compact Edition。SQL Server Compact Edition 可安装在以下位置:
%Program Files%/Microsoft SQL Server Compact Edition /v3.1
如果程序文件目录位于 C 驱动器中,则 SQL Server Compact Edition 运行时二进制文件将安装在 C:/Program Files/Microsoft SQL Server Compact Edition /v3.1 目录中。
在安装 SQL Server Compact Edition 之后,可以在“添加或删除程序”中看到该程序显示为“Microsoft SQL Server 2005 Compact Edition”。
DataDirectory 支持
DataDirectory 是表示数据库路径的替换字符串。由于无需对完整路径进行硬编码,DataDirectory 简化了项目的共享和应用程序的部署。例如,无需使用以下连接字符串:
"Data Source= c:/program files/MyApp/Mydb.sdf"
通过使用 |DataDirectory|(包含在如下所示的竖线中),即可具有以下连接字符串:
"Data Source = |DataDirectory|/Mydb.sdf"
可以通过调用 AppDomain.SetData 在 AppDomain 上设置 DataDirectory 属性。
注意:
.NET Compact Framework 不支持 AppDomain.SetData。但是,在为移动设备创建应用程序时,需要使用 .NET Compact Framework 数据访问接口。因此,如果在为移动设备编写应用程序时使用了 DataDirectory 属性,则 SQL Server Compact Edition 将会返回一个错误。
如果没有设置 DataDirectory 属性,则会应用以下默认规则来访问数据库文件夹路径:
对于已置于客户端计算机目录中的应用程序,此数据库路径将是置入该应用程序的文件夹。例如,如果 MyApp.exe 置入 /MyDir 文件夹中,则可对 /MyDir 文件夹进行访问。
对于在 ClickOnce 下运行的应用程序,将会为此目的创建一个数据文件夹,并可对其进行访问。
对于 Web 应用程序,则可对 App_Data 文件夹进行访问。通过使用 AppDomain.SetData,可以将 DataDirectory 设置为 App_Data 文件夹。
(6)SQL Server 2005 Compact Edition体系结构
(7)无法初始化 OLE DB Provider for SQL Mobile。请检查是否正确安装了 SQLOLEDB.dll。
regsvr32 "D:/Program Files/Microsoft SQL Server Compact Edition/v3.1/sqlceoledb30.dll" 另外说明:如果出现 loadlibrary("")失败-找不到指定得模块组件注册失败-处理办法 一般指定正确的路径或在网上查找正确的摸板。
另外一般我在vs2005上开发组件,有时会碰到组件注册不了,我查了下网上说返回vc6的工程就可以了或是重建工程,那太麻烦,经过我的测试,将.def文件移除,再添加就可以解决这个问题。
实践解决方法:Microsoft SQL Server 2005 Compact Edition 服务器工具.msi安装。
[MSDN解释>>服务器代理错误]
下表列出在使用 SQL Server 2005 Compact Edition (SQL Server Compact Edition) 时,您可能会遇到的 SQL Server Compact Edition 服务器代理 (sqlcesa30.dll) 错误。
重要事项: |
||||
如果在您使用 SQL Server Compact Edition 时遇到以“内部错误”为前缀的任何错误,请再次尝试该操作,因为这种错误可能不会再现。如果再次出现这种错误,您应立即与 Microsoft 产品支持服务部门联系。内部错误可能无法通过常见的故障排除技术来加以解决。 |
||||
值 |
错误标记 |
说明 |
数字参数 |
字符串参数 |
29001 |
SSCE_M_EXPECTEDINSERTUPDATESONLY |
内部错误: 处理插入或更新时遇到意外状态。 |
不适用 |
不适用 |
29004 |
SSCE_M_CANTCOCREATEMSDAINITIALIZE |
无法初始化 OLE DB Provider for SQL Server Compact Edition。请检查是否正确安装了 SQLOLEDB.dll。 |
不适用 |
不适用 |
29005 |
SSCE_M_RSCBWITHSAMEEXCHANGEID |
复制会话控制块已存在。IIS 服务器可能在同步过程中关闭。请重试同步处理。 |
不适用 |
不适用 |
29006 |
SSCE_M_SQLRECONCILERFAILED |
对 SQL Server 协调器的调用失败。请尝试重新同步。 |
不适用 |
不适用 |
29007 |
SSCE_M_QUERYCANNOTBETRACKED |
无法跟踪查询。可能没有主键,也可能查询涉及多个表。 |
不适用 |
Query string(查询字符串) |
29009 |
SSCE_M_EXPRESSIONWITHOUTALIAS |
内部错误: 没有别名,无法处理表达式或文字。RDA 错误。 |
不适用 |
不适用 |
29010 |
SSCE_M_NOPRIMARYKEY |
表不包含主键。 |
不适用 |
Table name(表名) |
29011 |
SSCE_M_ROWVERCOLUMN |
表包含时间戳或另一行版本控制列。 |
不适用 |
Table name(表名) |
29012 |
SSCE_M_INVALIDPUSHSEQUENCE |
内部错误: 在 SQL Server Compact Edition 服务器代理中执行推送操作时出错。 |
不适用 |
不适用 |
29015 |
SSCE_M_PUSHPKCOLCOUNTMISMATCH |
SQL Server 上主键中预期的列数与 SQL Server Compact Edition 中的计数不匹配。自上次 RDA 请求后,SQL Server 上的架构已更改。必须再次请求该表,以便与 SQL Server 上定义的主键架构相匹配。 |
Supplied count, Expected count(提供的计数,预期的计数) |
不适用 |
29016 |
SSCE_M_VF_MISSINGSERVERCOLUMN |
客户端和服务器端的 RDA 表的列不匹配。 |
不适用 |
Table name(表名) |
29017 |
SSCE_M_VF_MISMATCHEDTYPES |
SQL Server Compact Edition 列中的 OLE DB 数据类型信息与 RDA 表的 SQL Server 列中的信息不匹配。 |
Client type, Server type(客户端类型,服务器类型) |
Table name(表名) |
29018 |
SSCE_M_VF_MISSINGTABLE |
找不到列。缺少表名或权限无效。 |
不适用 |
Table name(表名) |
29020 |
SSCE_M_NOROWSAFFECTED |
无法使用 RDA 更新或删除 SQL Server 中的行。 |
不适用 |
不适用 |
29021 |
SSCE_M_TOOMANYROWSAFFECTED |
在 SQL Server 数据库中,RDA 更新或删除操作将影响到多行。 |
不适用 |
不适用 |
29022 |
SSCE_M_INCORRECTPROVIDERVERSION |
Microsoft OLE DB Provider for SQL Server 的版本不正确。请安装 MDAC 2.8 或更高版本。 |
不适用 |
Version(版本) |
29023 |
SSCE_M_INCORRECTPROVIDER |
运行 IIS 的计算机上的 OLE DB Provider for SQL Server 与 SQL Server Compact Edition 不兼容。请安装 MDAC 2.8 或更高版本。 |
不适用 |
Provider(访问接口) |
29024 |
SSCE_M_VF_PRIMARYKEYCHANGE |
推送操作不符合客户端和服务器端主键列的顺序。请重新拖出该表或重置主键列。 |
不适用 |
不适用 |
29025 |
SSCE_M_VF_MISSINGSERVERPKCOLUMN |
推送操作在 SQL Server 表上找不到主键列。 |
不适用 |
不适用 |
29026 |
SSCE_M_VF_EXTRASERVERPKCOLUMN |
推送操作在 SQL Server 表上找到了额外的主键列。 |
不适用 |
不适用 |
29028 |
SSCE_M_UNSUPPORTEDOLEDBTYPE |
Microsoft OLE DB Provider for SQL Server 不支持 OLE DB 数据类型。请安装 MDAC 2.8 或更高版本。 |
Data type(数据类型) |
不适用 |
29029 |
SSCE_M_VF_NONLOBIUNKNOWN |
内部错误: SQL Server Compact Edition 列元数据信息与 OLEDB 访问接口(非 SQL Server)不匹配。 |
不适用 |
不适用 |
29030 |
SSCE_M_NOTRACKPKCOLMISSING |
由于缺少主键的一列或多列,因此无法跟踪查询。 |
不适用 |
不适用 |
29031 |
SSCE_M_NOTRACKCOMPUTEDCOLUMN |
由于表包含无法请求的计算列,因此无法跟踪查询。 |
不适用 |
不适用 |
29032 |
SSCE_M_NOTRACKMULTITABLE |
由于查询是多表查询,因此无法跟踪查询。 |
不适用 |
不适用 |
29033 |
SSCE_M_INVALIDCODEPAGE |
服务器代码页或替换代码页无效或未安装在运行 IIS 的计算机上。 |
Code page(代码页) |
不适用 |
29034 |
SSCE_M_MISMATCHEDCOMPONENTS |
SQL Server Compact Edition 客户端代理和 SQL Server Compact Edition 服务器代理组件版本不匹配。请重新安装复制组件。 |
不适用 |
SQL Server Compact Edition 客户端代理版本,SQL Server Compact Edition 服务器代理版本 |
29042 |
SSCE_M_RSCBTIMEDOUT |
复制会话处于不活动状态的时间超过了清除间隔,同步已被取消。当服务器的 CPU 使用率非常高时通常会发生此错误。超过了默认的 2 小时。请再次尝试该操作。 |
不适用 |
不适用 |
29044 |
SSCE_M_FILERENAMEFAILED |
SQL Server Compact Edition 无法将 IIS 服务器上的 .IN 文件重命名为 .OUT。在使用合并复制时,当 SQL Server Compact Edition 上有大量引用完整性重试情况时通常会发生此错误,因为此时 SQL Server Compact Edition 无法修改文件扩展名。请重试。 |
不适用 |
不适用 |
29045 |
SSCE_M_INITIALIZERECONCILERFAILED |
初始化 SQL Server 协调器失败。请重试。 |
不适用 |
不适用 |
29046 |
SSCE_M_READONLY |
执行 RDA 推送时,在推送到 SQL Server Compact Edition 的表上,SQL Server 只能获取只读游标。在尝试执行推送时,SQL Server 上可能存在锁定冲突。请验证 SQL Server 上的表是否可更新,然后重试。 |
不适用 |
不适用 |
29048 |
SSCE_M_IMPERSONATIONFAILED |
在运行 IIS 的计算机上无法模拟 Windows 用户帐户。 |
不适用 |
不适用 |
29049 |
SSCE_M_CANTCONNECTTOPUBLISHER |
服务器代理无法连接到发布服务器。 |
不适用 |
不适用 |
29050 |
SSCE_M_GETROWSET |
内部错误: 获取行集时出错。 |
不适用 |
不适用 |
29051 |
SSCE_M_GETCOLUMNS |
内部错误: 获取列时出错。 |
不适用 |
不适用 |
29052 |
SSCE_M_CREATEINDEXSQL |
内部错误: 生成 RDA 创建索引 SQL 语句时出错。 |
不适用 |
不适用 |
29053 |
SSCE_M_CREATETABLESQL |
内部错误: 生成 RDA 创建表 SQL 语句时出错。 |
不适用 |
不适用 |
29054 |
SSCE_M_GETPRIMARYKEYCOLUMNS |
内部错误: 获取 RDA 主键列时出错。 |
不适用 |
不适用 |
29055 |
SSCE_M_CREATEPRIMARYKEY |
内部错误: 生成创建 RDA 主键 SQL 语句时出错。 |
不适用 |
不适用 |
29056 |
SSCE_M_VERIFYSCHEMA |
内部错误: 验证 RDA 架构时出错。 |
不适用 |
不适用 |
29057 |
SSCE_M_PREPAREINSERT |
内部错误: 准备插入 RDA 时出错。 |
不适用 |
不适用 |
29058 |
SSCE_M_PREPAREUPDATE |
内部错误: 准备更新 RDA 时出错。 |
不适用 |
不适用 |
29059 |
SSCE_M_PREPAREDELETE |
内部错误: 准备删除 RDA 时出错。 |
不适用 |
不适用 |
29060 |
SSCE_M_CONNECTFAILURESQL |
用指定的连接信息无法连接到 SQL Server。SQL Server 不存在,或者由于 SQL 用户不是 SQL Server 的有效用户、密码不正确而拒绝访问。 |
不适用 |
不适用 |
29061 |
SSCE_M_CONNECTFAILUREIIS |
用指定的连接信息无法连接到 SQL Server。SQL Server 不存在,或者由于 IIS 用户不是运行 SQL Server 的计算机的有效用户、密码不正确而拒绝访问。 |
不适用 |
不适用 |
29062 |
SSCE_M_SELECTSTRINGMISSING |
未指定 SQLSelectString 参数。 |
不适用 |
不适用 |
(9).NET Compact Framework 2.0 Service Pack 2 Redistributable的安装
The Microsoft® .NET Compact Framework 2.0 SP2 Redistributable 包含为 .NET Compact Framework 构建的公共语言运行库和类库。除支持版本 2.0 外,它还支持面向版本 1.0 及其在版本 2.0 之前已发布的 Service Pack 版本开发的应用程序。 重要说明:此可再发行组件包使用户可以在 Pocket PC、Pocket PC Phone Edition、Smartphone 和其他基于 Windows CE 的设备上运行 .NET Compact Framework 应用程序。要开发 .NET Compact Framework 应用程序,必须安装 Microsoft Visual Studio 2005 或 Microsoft .NET Framework 2.0 SDK。 本程序包使用 ActiveSync 4.0 及以上版本来更新设备,更多信息请参见 Windows Mobile Center。请确保在运行 NETCFSetupv2.msi 之前连接好您的设备。如果未连接设备,ActiveSync 会存储 CAB 文件,直到您连接了设备后才进行更新。不使用 ActiveSync 的用户可以直接在设备上运行与安装文件夹中的找到的设备相匹配的 CAB 文件。
(10) 分析查询时出错。 [ Token line number = 1,Token line offset = 23,Token in error = Database ]
四、案例说明
private void button1_Click(object sender, EventArgs e)
{
#region 创建数据库 只能保存一张表
if (File.Exists("MyDatabase.sdf"))
{File.Delete("MyDatabase.sdf");
}
SqlCeEngine engine = new SqlCeEngine();
engine.LocalConnectionString = "Data Source=MyDatabase.sdf";
engine.CreateDatabase();
#endregion
#region 执行SubmitSQL
String connsString = @"Provider=sqloledb;Data Source=WWW-BF6CD6C80F2;Initial Catalog=CEDATA;User ID=sa;Password=sa";
SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess(
"http://WWW-BF6CD6C80F2/Compact/sqlcesa30.dll", "Data Source=MyDatabase.sdf");
try
{rda.SubmitSql("Update MemTable Set MemberName='XXXXXXXX' WHERE MemberID=2", connsString);
MessageBox.Show("SubmitSQL执行成功!");
}
catch(Exception ex)
{
MessageBox.Show("SubmitSQL执行失败!");
}
#endregion
}
结果:
五、数据同步怎么选择,是RDA还是Replication?
Replication 是在服务器定义及被使用的,RDA是在客户端定义及被使用的。1、如果PPC设备上主要存放静态数据的话,那PPC设备只是从远程SQl Server数据库下载数据,在这种情况下,比较适合选用RDA,如果需要在PPC设备上采集新数据,并将新数据更新到远程SQl Server数据库中,而无需太多考虑数据冲突的话,也比较适合选择RDA。
2、如果考虑日后升级,Replication是个不错的选择,做为枢纽的服务器,开发人员只需要通过修改Publication就能控制那些数据可以被分发复制,使用Publication的移动解决方案,在商业逻辑变化后,只需要增或者更改已有的Publication,就基本可以适应商业逻辑的变化,而无需修改客户端的PPC应用程序。