| RDA实现SQL CE与SQL Server间数据存取 |
|
| 来源:天极yesky 作者:窦瑞欣 加入时间:2006-12-8 访问次数:122 [大 中 小] |
|
配置就绪后,我们可以检测SQL Server CE Server Agent工作是否正常,启动IE,在地址栏中输入 Http://localhost/sqlce/sscesa20.dll,或者将localhost改为实际的主机名称,浏览器返回“SQL Server CE Server Agent”说明SQL Server CE Server Agent运行正常,IIS配置正确。
接下来需要配置SQL Server 2000,我们需要在桌面SQL Server 2000中创建名为Task数据库,包含Employee员工表和ItemList任务表,为ItemList表中ID字段创建主键和索引,并且添加在IIS中设置的可以访问sqlce虚拟目录和其下文件的IIS来宾用户,这样该用户就可通过IIS来存取SQL Server 2000的数据库了。
|
数据库
员工表
ItemList任务表
虚拟目录和来宾用户 | Pocket PC和桌面PC网络连接可以使用Microsoft ActiveSync,也可以使用无线WiFi 802.1x。由于我们是与单台桌面PC连接,需要在其上同时安装IIS和SQL Server 2000。实际使用得知SQL Server CE 2.0运行在桌面服务环境的服务器工具与SQL Server 2000在连接上存在一定问题,微软对此问题的解决办法是:首先将SQL Server 2000打上SP3或者SP4,同时根据SQL Server 2000的补丁版本,还需要给SQL Server CE 2.0打上用于SQL Server 2000 SP3或者 SQL Server 2000 SP4的补丁,SQL Server CE的服务器组件才能顺利工作,上述更新和补丁程序在微软网站上都有下载。
配置结束后启动Visual Studio .Net 2003,单击文件 – 新建 – 项目 - Visual Basic 项目 - 智能设备应用程序,创建空项目。整个程序由一个Form窗体MainForm组成,其上包含两个Panel组件和一个Button组件,我们把程序分为两个主界面,一个为登录界面,一个为操作界面,分别对应两个Panel控件,当登录用Panel显示时,操作用Panel则隐藏,当登录成功后两个Panel的显示属性则相反。Button控件提供退出操作。登录用Panel上面包含几个TextBox和Button控件供填写SQL Server CE Server Agent 的Web地址、要连接的远程SQL Server 2000服务器名称、能够存取桌面SQL Server数据库的用户名和密码,以及要登录的员工ID和密码等必要的登录信息。运行在实际设备上的图示如下:
当单击”登录”按钮时,程序首先在智能设备上创建SQL Server CE本地数据库sdf文件,本程序下载的所有表都保存在该数据库中:
…… ' 根据指定的sdf文件路径创建本地的用户数据库文件用于RDA的PULL en = New SqlCeEngine("Data Source=" & LocalDatabaseFile) en.CreateDatabase() …… | 然后创建RDA对象的实例,并填写用于和远程SQL Server CE Server Agent 通信的相关信息。下载允许登录PPC的合法的用户信息数据到本地表:
| rda.Pull("UserInfo", "Select * from employee where emp_id='" + EMPId + "' and emp_password='" + Password + "'", RemoteConnString, RdaTrackOption.TrackingOff) | UserInfo表返回的是就是登录用户的记录信息,请注意RdaTrackOption的值为TrackingOff,因为我们没有在PPC上设置更改用户信息的操作,所以没必要跟踪该表。如果用户名和密码验证通过,UserInfo表的记录数就为1,也就是大于0,否则没有记录,然后我们通过使用SqlCeConnection、SqlCeDataAdapter、SqlCeDataReader以及DataTable返回UserInfo表的所有记录,一旦记录数为0则不允许登录:
If dtLocalUserInfo.Rows.Count > 0 Then '验证通过 CurrentLogonUserID = dtLocalUserInfo.Rows(0).Item("emp_id").ToString CurrentLogonUserName = dtLocalUserInfo.Rows(0).Item("emp_name").ToString Return True Else '验证失败,返回false Return False End If | 登录成功后根据登录用户名只返回其相关的任务记录,并将任务记录保存在名为” itemlist”的表中:
|
|
|
|
|
|