在异地有两台电脑(A,B)能通过网络进行连接。
电脑A和电脑B使用同一数据库,A为主机,B为分机。
分机B中的数据如有增加、修改、删除等操作,采用类似于数据报盘的方式,将发生变更的数据导出到U盘中,然后在电脑A中实现更新数据库的操作。
以便主机A与分机B实现数据同步。请问大家如何才能用VB编程实现上述内容,注意:电脑之间无法使用C/S模式
电脑A和电脑B使用同一数据库,A为主机,B为分机。
分机B中的数据如有增加、修改、删除等操作,采用类似于数据报盘的方式,将发生变更的数据导出到U盘中,然后在电脑A中实现更新数据库的操作。
以便主机A与分机B实现数据同步。请问大家如何才能用VB编程实现上述内容,注意:电脑之间无法使用C/S模式
那你可以用B/S模式呀。
2:如果两个电脑仅在广域网中连接,就采用BS模式吧。(Socket也行)
3:如果两个电脑根本就无法连接,请继续使用U盘,因为VB不是万能的。
可以连网的话,可以直接用SQL数据库的数据同步功能吧(配置订阅和发布)?为什么用U盘?
只能用U盘的话,如果分机和总机数据库结构一样,我想是不是可以在U盘上记录分机上执行成功的SQL语句,拿到总机上的SQL数据库中去执行就行了吧?
就是这个意思啊, 操作分机和主机的VB程序都你写吧? 记录分机操作的SQL语句到文件,文件结构你自己定义,主机程序解析这个文件,执行其中的SQL语句...
'保持属性值的局部变量
Private mvarConnection As Connection '局部复制
Public Sub OpenDB(ByVal vConnectionString As String)
If mvarConnection.State = ADODB.adStateOpen Then
mvarConnection.Close
End If
mvarConnection.CursorLocation = adUseServer
mvarConnection.Open vConnectionString
End Sub
Public Property Get Connection() As Connection
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.Connection
Set Connection = mvarConnection
End PropertyPublic Function QuerySql(ByRef rRs As Recordset, ByVal vSql As String, ParamArray vParams() As Variant) As String
Dim cmd As New Command
Dim param As Variant
Dim rt As String
On Error GoTo tErr
Set cmd.ActiveConnection = mvarConnection
cmd.CommandText = vSql
cmd.CommandType = adCmdText
'记录语句
WriteLog vSql & vbtab & join(vParams,"`~`") cmd.Prepared = True
Set rRs = cmd.Execute(rt, vParams)
QuerySql = rt
GoTo funEnd
tErr:
QuerySql = err.Description
err.Raise vbObjectError + 5, err.Source, "执行查询时发生错误" & vbCrLf & vbCrLf & "原因:" & err.Description
funEnd:
End FunctionPrivate Sub Class_Initialize()
Set mvarConnection = New Connection
End SubPrivate Sub Class_Terminate()
Set mvarConnection = Nothing
End Sub
private sub WriteLog(byval LogText as string )
dim iFileNum as integer
dim sFileName as string
dim bytContent() as byte
iFileNum =freefile sFileName =app.path & "\Sql.txt"
bytContent=strconv(LogText,vbFromUnionCode)
open sFileName for binary as #iFileNum put #iFileNum,lof(iFileNum)+1,bytContent
close #iFileNum
end sub然后每次使用QuerySql方法执行数据库查询,在应用程序目录中就有Sql.txt文件,里面就是执行的语句.
记录所有的SQL操作,再到服务器上执行
Set cn = New ADODB.Connection
cn.Open "Provider=sqloledb;Data Source=服务器名 ;Initial Catalog=数据库名;User Id=sa;Password="
sql = "select * from 表1"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open sql, cn, adOpenDynamic, adLockOptimisticrs.Requery
If rs.EOF <> False Then '数据库为空
rs.AddNew
rs.Fields(1) = Trim(Text2.Text)
rs.Fields(2) = Trim(Text1.Text)
rs.Update请大家指导一下,上述语句如何改写成调用QuerySql的形式??
重复:BACKUP DATABASE 和 RESTORE DATABASE 都可以在 VB 中通过 ADODB.Connection.Execute 进行调用。
那你可以用B/S模式呀