|
- Private Sub MyPull(ByVal MyTable As String)'ExistTable表中存放PPC本地数据库的所有表格名称,MyTable为要PULL的表格
- Dim rdaNW As New SqlCeRemoteDataAccess
- Dim dbEngine As New SqlCeEngine
- Dim connDB As New SqlCeConnection(strConnLocal)
- Dim cmndDB As New SqlCeCommand("SELECT * FROM ExistTable WHERE TableName='" + MyTable + "'", connDB)
- Dim drdrDB As SqlCeDataReader
- '判断本地数据库是否存在该表
- connDB.Open()
- drdrDB = cmndDB.ExecuteReader()
- If drdrDB.Read = False Then
- MsgBox("该表不存在")'表格不存在,则先在MyTable里插入该表名,然后PULL
- With cmndDB
- .CommandText = "INSERT ExistTable(TableName) VALUES('" + MyTable + "')"
- .ExecuteNonQuery()
- End With
- Else
- MsgBox("表格存在!")'表格存在,则先删除本地表,然后PULL
- With cmndDB
- .CommandText = "DROP TABLE " + MyTable
- .ExecuteNonQuery()
- End With
- End If
- connDB.Close()
- Try
- With rdaNW
- .LocalConnectionString = strConnLocal
- .InternetUrl = strURL
- .InternetLogin = ""
- .InternetPassword = ""
- .Pull(MyTable, strSQL, strConnRemote, RdaTrackOption.TrackingOn)
- End With
- MsgBox("Pull OK!")
- Catch exSQL As Exception
- MsgBox(exSQL.Message)
- Finally
- rdaNW.Dispose()
- End Try
- End Sub
复制代码
异常的出现:
1. 检查本地是否有该表,如果没有,则写入表名,如果有,则删除该表。(到这一步的状态果是,ExistTable有Mytable这个名字,但是本地数据库中实际上还没有MyTable),然后执行PULL操作,如果此时由于某种原因(比如网络链接不正常)导致PULL失败,即MyTable未下载到PPC上。程序结束。
2. 在第一次的基础上,如果再次运行程序就会出现异常了:
检查本地是否有该表,发现ExistTable有Mytable这个名字,于是误认为存在,试图执行删除操作,结果导致异常。
曾经尝试,把删除操作放在每一次PULL成功之后进行,发现还是有可能会出现异常的。
希望有经验的兄弟指教一下。多谢。
|
|