| rda.Pull("itemlist", "Select * from itemlist where emp_id='" + EMPId + "'", RemoteConnString, RdaTrackOption.TrackingOnWithIndexes) | 由于RDA不会保持记录锁,push操作会无条件的将所有数据改动都应用到SQL Server中,所以容易引起当前数据库的其他用户的更新数据的丢失。我们需要按照一定的筛选条件过滤我们感兴趣的记录,以便获取唯一且不同于其它用户返回的记录集。TrackingOnWithIndexes说明在PPC上对任务状态的更改将会被跟踪,在后面的同步操作时会根据跟踪的变化将更改更新到远程数据库中。
任务记录成功获得后,我们隐藏登录用Panel而将操作用Panel置于顶层用于对任务记录的添加、状态更新、删除已经同步操作等。
用listview控件来显示任务记录,我们遍历返回的itemlist表,每一条记录创建一个ListViewItem,并添加到listview中以便显示:
While Reader.Read Dim ls As New ListViewItem(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) End While | 向SQL Server CE表添加、删除和更新操作同桌面数据库操作相似,例如添加操作:
selectCMD.CommandText = "insert into itemlist (ID,TaskName,TaskContent,Finished,EMP_ID) values (" + _ TextBox1.Text + "," + _ "'" + taskname + "'" + "," + _ "'" + taskcontent + "'" + "," + "0" + "," + "'" + CurrentLogonUserID + "'" + ")" selectCMD.CommandTimeout = 30 conn.Open() selectCMD.ExecuteNonQuery() | 对智能设备本地表进行更新后还需要将改动保存到远程SQL Server中去,我们使用如下代码:
| rda.Push("itemlist", RemoteConnString, RdaBatchOption.BatchingOn) | 将更改成批推入远程SQL Server中,注意:只有跟踪的提取表才可以执行Push操作。运行在实际设备上的图示如下:
该程序成功运行在Windows XP SP2和Dell X3i(Pocket PC 2003)环境下。
|