4 RDA错误处理
在RDA将SQL Mobile数据库中的修改数据上传到SQL Server中的过程中,如果发生错误,RDA提供了一个Error Table,Push方法发生的错误将被记录在该表中。在调用Push方法时,我们可以指定一个Error Table的名称,如果Push过程中发生错误,SQL Mobile将自动在SQL Mobile数据库中创建Error Table,记录错误信息。
当SQL Mobile中的一条记录无法被Push到SQL Server中时,RDA会产生一个错误。产生错误的原因可能是:
1)在SQL Mobile数据库中插入的记录主键在SQL Server数据表中已经存在。
2)SQL Mobile试图更新一条已经被其他用户删除的记录时。
3)如果Push过程因为网络原因发生中断,但是一些insert操作已经被插入到SQL Mobile数据库中,第二个Push时,会因为记录主键重复而失败。
为了跟踪这些错误,我们在Pull方法的使用指定TRACKINGON 或者TRACKINGON_INDEXES,然后指定Error Table的名称。在Push的时候如果有错误发生的话,SQL Mobile将在Error Table里创建一条记录。该表主要有三个字段:s_ErrorDate,设置错误发生的日期和时间;s_OLEDBErrorNumber,为OLEDB中返回该错误的HResult;s_OLEDBErrorString,则是该错误的描述字符串。
我们可以根据这些错误提示,来修改错误数据。如果相关连的SQL Mobile数据表被删除,Error Table也将自动被删除。所以,我们可以将这些数据暂存到其他数据表中,或者下次Pull时使用另外的本地表名称,以保留这些错误数据。