这个问题比较难一些,这是别人和我讨论时发的贴子 之前做的一些系统中都涉及将本地数据上传到远程数据库服务器,或者将远程数据库服务器的数据下载的本地,都不知道用那种方式实现更方便,更安全,在此向大伙请教。我曾经用这样的方式实现在远程服务器写一个ASP文件接收数据如:<%If Request.ServerVariables("REQUEST_METHOD")="POST" Then ON ERROR RESUME NEXT Dim AttendArray Dim ResStr Set xmldom=Server.CreateObject("Microsoft.XMLDOM") Set Obj=Server.CreateObject("SAS.SHIFT") xmldom.load(Request) Set Rs=Server.CreateObject("ADODB.Recordset") Rs.Open xmldom AttendArray=Rs.GetRows If IsArray(AttendArray) Then ResStr=Obj.AddAttendRecord(AttendArray) End If If Err.number =0 Then Response.Write "OK" Set xmlResult=Server.CreateObject("Microsoft.XMLDOM") xmlResult.save(Response) Set xmlResult=Nothing Else Response.Write "NO" Set xmlResult=Server.CreateObject("Microsoft.XMLDOM") xmlResult.save(Response) Set xmlResult=Nothing End If End If %> 客户端这样写的 Dim Url As String Url = "http://" & ServerName & "/shift/AddAttendRecord.asp"
Dim Conn As ADODB.Connection Dim rs As ADODB.Recordset Dim Strm As ADODB.Stream Dim XMLHttp As XMLHTTPRequest Dim ObjSas As InstantPassCls.clsSAS Dim AttendArray As Variant Dim i As Integer Set rs = New ADODB.Recordset Set ObjSas = New InstantPassCls.clsSAS AttendArray = ObjSas.GetUploadRecord
If IsArray(AttendArray) Then
With rs.Fields .Append "StaffNo", adBSTR .Append "Time", adBSTR .Append "AttendType", adBSTR End With rs.Open With rs For i = 0 To UBound(AttendArray, 2) .AddNew .Fields("StaffNO") = AttendArray(0, i) .Fields("Time") = AttendArray(1, i) .Fields("AttendType") = AttendArray(2, i) .Update Next i End With
Set Strm = New ADODB.Stream rs.Save Strm, adPersistXML Set XMLHttp = New XMLHTTPRequest XMLHttp.Open "POST", Url, False XMLHttp.send Strm.ReadText
If Err.Number = 0 Then UPloadData = XMLHttp.responseText Sleep (10000) 'If Left(UPloadData, 2) = "NO" Then If InStr(1, UPloadData, "NO") > 0 Then UPloadData = LoadResString(5038) WriteLog 4, "Upload data failed" End If 'If Left(UPloadData, 2) = "OK" Then If InStr(1, UPloadData, "OK") > 0 Then ObjSas.MarkRecord WriteLog 4, "Upload data success" UPloadData = LoadResString(5037) End If Else UPloadData = LoadResString(5036) WriteLog 4, "Upload data failed" End If
Else UPloadData = LoadResString(5035) End If
Set ObjSas = Nothing Set rs = Nothing 这样传送觉得不是很稳定,尤其是数据量大的时候经常出现超时问题后来曾经用SOAP实现调用远程服务器函数,但觉得那样配置比较麻烦,除了IIS要配置可解析WSDL文件外,客户端安装SOAP组件比较麻烦。我一直想,能不能通过ADO直接连接远程数据库,其实觉得那样做应该是没有问题,但我从来没有那么做。
之前做的一些系统中都涉及将本地数据上传到远程数据库服务器,或者将远程数据库服务器的数据下载的本地,都不知道用那种方式实现更方便,更安全,在此向大伙请教。我曾经用这样的方式实现在远程服务器写一个ASP文件接收数据如:<%If Request.ServerVariables("REQUEST_METHOD")="POST" Then
ON ERROR RESUME NEXT
Dim AttendArray
Dim ResStr
Set xmldom=Server.CreateObject("Microsoft.XMLDOM")
Set Obj=Server.CreateObject("SAS.SHIFT")
xmldom.load(Request)
Set Rs=Server.CreateObject("ADODB.Recordset")
Rs.Open xmldom
AttendArray=Rs.GetRows
If IsArray(AttendArray) Then
ResStr=Obj.AddAttendRecord(AttendArray)
End If
If Err.number =0 Then
Response.Write "OK"
Set xmlResult=Server.CreateObject("Microsoft.XMLDOM")
xmlResult.save(Response)
Set xmlResult=Nothing
Else
Response.Write "NO"
Set xmlResult=Server.CreateObject("Microsoft.XMLDOM")
xmlResult.save(Response)
Set xmlResult=Nothing
End If
End If
%>
客户端这样写的 Dim Url As String Url = "http://" & ServerName & "/shift/AddAttendRecord.asp"
Dim Conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Strm As ADODB.Stream
Dim XMLHttp As XMLHTTPRequest
Dim ObjSas As InstantPassCls.clsSAS
Dim AttendArray As Variant
Dim i As Integer
Set rs = New ADODB.Recordset
Set ObjSas = New InstantPassCls.clsSAS
AttendArray = ObjSas.GetUploadRecord
If IsArray(AttendArray) Then
With rs.Fields
.Append "StaffNo", adBSTR
.Append "Time", adBSTR
.Append "AttendType", adBSTR
End With
rs.Open
With rs
For i = 0 To UBound(AttendArray, 2)
.AddNew
.Fields("StaffNO") = AttendArray(0, i)
.Fields("Time") = AttendArray(1, i)
.Fields("AttendType") = AttendArray(2, i)
.Update
Next i
End With
Set Strm = New ADODB.Stream
rs.Save Strm, adPersistXML
Set XMLHttp = New XMLHTTPRequest
XMLHttp.Open "POST", Url, False
XMLHttp.send Strm.ReadText
If Err.Number = 0 Then
UPloadData = XMLHttp.responseText
Sleep (10000)
'If Left(UPloadData, 2) = "NO" Then
If InStr(1, UPloadData, "NO") > 0 Then
UPloadData = LoadResString(5038)
WriteLog 4, "Upload data failed"
End If
'If Left(UPloadData, 2) = "OK" Then
If InStr(1, UPloadData, "OK") > 0 Then
ObjSas.MarkRecord
WriteLog 4, "Upload data success"
UPloadData = LoadResString(5037)
End If
Else
UPloadData = LoadResString(5036)
WriteLog 4, "Upload data failed"
End If
Else
UPloadData = LoadResString(5035)
End If
Set ObjSas = Nothing
Set rs = Nothing
这样传送觉得不是很稳定,尤其是数据量大的时候经常出现超时问题后来曾经用SOAP实现调用远程服务器函数,但觉得那样配置比较麻烦,除了IIS要配置可解析WSDL文件外,客户端安装SOAP组件比较麻烦。我一直想,能不能通过ADO直接连接远程数据库,其实觉得那样做应该是没有问题,但我从来没有那么做。
http://expert.csdn.net/Expert/topic/1835/1835071.xml?temp=.7047998
客户端程序可以用任何软件编写。
顶帖的道理和软件自动升级一样。
数据以前用传整个.mdb文件的方法,现在改用.xml会小一点,图档也用Ftp传上去。
Server端启动一个winsock接听,每上传一次,就进行一次读入操作。
楼主或哪位大哥有好的例子給我参考一下,
虽然现在将就着可以用,以前搞这个搞得焦头烂耳。
会加分酬谢的!!!
然后,建议使用存储过程,速度快。
剩下的就是sql语句的运用了
毕业设计建议作用一些好的技术,有新意(个人观点)
直接ADO连接远程数据库,本人已经用了一年多了!
可不可以拿出来我们学习一下, 不要吝啬,我也会給分的。
注意Server端是Access的。