(极力推荐)SQLCE数据库同步!

bedlang 2002-11-02 07:16:06
www.Move2008.com

由于不能贴图片,这里只有文章部分,全文请到此处观看:
http://www.move2008.com/ReadNews.asp?NewsID=741&BigClassName=技术文章&SmallClassName=PPC专区&SpecialID=12

或下载PDF文档:
http://www.move2008.com/down/list.asp?id=29

===========================================

'数据库连接ADO Connection对象
Public conn As ADOCE.Connection
Public LocalConnStr, RemoteConnStr, InternetURL, ServerIP As String

'同步前的初使化
Public Function SyncInit()
'本地SQLCE连接ConnectString
LocalConnStr = "Provider=Microsoft.SQLServer.OLEDB.CE.1.0;Data Source=\test"
Set conn = CreateObject("ADOCE.connection.3.0")
conn.ConnectionString = LocalConnStr

'如果数据库是打开的则先关闭
If conn.State = 1 Then conn.Close

'PC服务器的地址
ServerIP = "192.168.0.1"

'远程SQL Server2000数据库连接地址
RemoteConnStr = "Provider=sqloledb;Initial Catalog=AircraftMobile;Data Source=" + ServerIP + ";user id=test;password=test;"
'远程PC机上的SQLCE同步的WEB地址(在IIS设置)
InternetURL = "http://"; + ServerIP + "/sqlce/sscesa10.dll"
end Function

'数据同步
Public Function SyncTable(tablename, sql)
delTable (tablename)
Set ceRDA = CreateObject("SSCE.RemoteDataAccess.1.0")
ceRDA.LocalConnectionString = LocalConnStr
ceRDA.InternetURL = InternetURL

On Error Resume Next
‘把PC数据库中的表同步到PocketPC中
ceRDA.Pull tablename, sql, RemoteConnStr, TRACKINGOFF

‘把PocketPC中的数据同步到PC中
‘此行已注释:goRDA.Push tablename, RemoteConnStr

If ceRDA.ErrorRecords.Count > 0 Then
For Each gceErr In ceRDA.ErrorRecords
strErr = ""
strErr = strErr + "错误号:" + Trim(gceErr.NativeError) + " "
strErr = strErr + "目标:" + gceErr.Description + " "
MsgBox tablename + ":" + strErr
Next
End If

Set ceRDA = Nothing
End Function

'删除表
Public Function delTable(tablename)
Set conn = CreateObject("ADOCE.connection.3.0")
conn.ConnectionString = "Provider=Microsoft.SQLServer.OLEDB.CE.1.0;Data Source=\test"
conn.Open
On Error Resume Next
conn.Execute ("drop table " + tablename)
conn.Close
End Function

'远程操作PC服务器数据库
function RemoteSQL(sql)
if trim(sql)<>"" then
if mid(sql,len(sql),1)<>";" then sql = sql & ";"
Set ceRDA = CreateObject("SSCE.RemoteDataAccess.1.0")
ceRDA.InternetURL = InternetURL
sql = "BEGIN TRANSACTION; Use test;" & sql & "COMMIT TRANSACTION;"

On Error Resume Next
ceRDA.SubmitSQL sql,RemoteConnStr
If ceRDA.ErrorRecords.Count > 0 Then
For Each gceErr In ceRDA.ErrorRecords
strErr = ""
strErr = strErr & "错 误 号: " & Trim(gceErr.NativeError) & vbCrLf
strErr = strErr & "出错目标: " & gceErr.Description & vbCrLf
MsgBox strErr
Next
End If

Set ceRDA = Nothing
end if
end function


===========================
www.Move2008.com

...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
miaomiaoga 2002-12-11
  • 打赏
  • 举报
回复
像臺灣書的例子。。。。
fallhill 2002-12-11
  • 打赏
  • 举报
回复
各位大侠,难道他们同步这么复杂吗?
有没有象Access数据库那样的,直接用ActiveSync同步的方法?
netxray 2002-11-19
  • 打赏
  • 举报
回复
楼上的楼上,你可以试一下compact函数
bedlang 2002-11-08
  • 打赏
  • 举报
回复
up
yu_yanjie 2002-11-06
  • 打赏
  • 举报
回复
正好在这里问一下:
删除刚才pull的表,再pull,文件还是增大的,我的pull了60几次就到2M了 ,怎么能让库文件在删除表后大小恢复到pull表之前呢?

不用.net,高手帮忙哦~~~~~~~~~~~~~~~~``
bedlang 2002-11-06
  • 打赏
  • 举报
回复
SQLCE2.0也早已出来了
bedlang 2002-11-05
  • 打赏
  • 举报
回复
请下载PDF文档:http://www.move2008.com/down/list.asp?id=29
这是一整套解决方案,并非一个例子!
netxray 2002-11-04
  • 打赏
  • 举报
回复
不就是sqlce自带的例子么

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧