WEB开发网
开发学院数据库MSSQL Server 利用RDA实现SQL CE与桌面SQL Server数据库间的数据... 阅读

利用RDA实现SQL CE与桌面SQL Server数据库间的数据存取

 2010-06-16 15:43:51 来源:WEB开发网   
核心提示:当单击”登录”按钮时,程序首先在智能设备上创建SQL Server CE本地数据库sdf文件,利用RDA实现SQL CE与桌面SQL Server数据库间的数据存取(4),本程序下载的所有表都保存在该数据库中:'根据指定的sdf文件路径创建本地的用户数据库文件用于RDA的PULLen=N

当单击”登录”按钮时,程序首先在智能设备上创建SQL Server CE本地数据库sdf文件,本程序下载的所有表都保存在该数据库中:

'根据指定的sdf文件路径创建本地的用户数据库文件用于RDA的PULL

en=NewSqlCeEngine("DataSource="&LocalDatabaseFile)

en.CreateDatabase()

然后创建RDA对象的实例,并填写用于和远程SQL Server CE Server Agent 通信的相关信息。下载允许登录PPC的合法的用户信息数据到本地表:

rda.Pull("UserInfo","Select*fromemployeewhereemp_id='"+EMPId+

"'andemp_password='"+Password+"'",RemoteConnString,RdaTrackOption.TrackingOff)

UserInfo表返回的是就是登录用户的记录信息,请注意RdaTrackOption的值为TrackingOff,因为我们没有在PPC上设置更改用户信息的操作,所以没必要跟踪该表。如果用户名和密码验证通过,UserInfo表的记录数就为1,也就是大于0,否则没有记录,然后我们通过使用SqlCeConnection、SqlCeDataAdapter、SqlCeDataReader以及DataTable返回UserInfo表的所有记录,一旦记录数为0则不允许登录:

IfdtLocalUserInfo.Rows.Count>0Then'验证通过

CurrentLogonUserID=dtLocalUserInfo.Rows(0).Item("emp_id").ToString

CurrentLogonUserName=dtLocalUserInfo.Rows(0).Item("emp_name").ToString

ReturnTrue

Else  '验证失败,返回false

ReturnFalse

EndIf

登录成功后根据登录用户名只返回其相关的任务记录,并将任务记录保存在名为” itemlist”的表中:

rda.Pull("itemlist","Select*fromitemlistwhereemp_id='"+EMPId+

"'",RemoteConnString,RdaTrackOption.TrackingOnWithIndexes)

由于RDA不会保持记录锁,push操作会无条件的将所有数据改动都应用到SQL Server中,所以容易引起当前数据库的其他用户的更新数据的丢失。我们需要按照一定的筛选条件过滤我们感兴趣的记录,以便获取唯一且不同于其它用户返回的记录集。TrackingOnWithIndexes说明在PPC上对任务状态的更改将会被跟踪,在后面的同步操作时会根据跟踪的变化将更改更新到远程数据库中。

任务记录成功获得后,我们隐藏登录用Panel而将操作用Panel置于顶层用于对任务记录的添加、状态更新、删除已经同步操作等。

用listview控件来显示任务记录,我们遍历返回的itemlist表,每一条记录创建一个ListViewItem,并添加到listview中以便显示:

WhileReader.Read

DimlsAsNewListViewItem(Reader.Item("ID").ToString)

ls.SubItems.Add(Trim(Reader.Item("TaskName").ToString))

ls.SubItems.Add(Trim(Reader.Item("TaskContent").ToString))

ls.SubItems.Add(Reader.Item("Finished").ToString)

lvItemList.Items.Add(ls)

EndWhile

上一页  1 2 3 4 5  下一页

Tags:利用 RDA 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接