最新更新的文章列表
精彩推荐列表
毕业设计文章3 winsock传送查询后的数据集合
2007-05-10 19:44:53.0
客户端发送查询请求:
Private Sub Command1_Click()
Dim strSQL As String
strSQL = "select * from Employees"
If Winsock1.State = sckConnected Then
Winsock1.SendData strSQL
DoEvents
End If
End Sub
' 服务器收到查询请求并执行
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strBuffer As String
Dim arrData() As Byte
Dim objRec As Recordset
Winsock1.GetData strBuffer, vbString
Set objRec = GetRecordset(strBuffer) ' 执行接受到的查询,其中GetRecordset方法执行SQL语句并返回一记录集
arrData() = RsToBin(objRec) ' 记录集转换成字节数组
Winsock1.SendData arrData ' 送回客户段
DoEvents
End Sub
' 客户端收到响应
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim arrData() As Byte
Dim objRec As Recordset
Winsock1.GetData arrData, vbArray + vbByte
Set objRec = BinToRs(arrData) ' 还原记录集
Set DataGrid1.DataSource = objRec ' 显示数据
End Sub
这些代码只是说明大致的方法,实际上接受数据时还要处理何时接受完成,接受完了以后才能还原成记录集。
Private Sub Command1_Click()
Dim strSQL As String
strSQL = "select * from Employees"
If Winsock1.State = sckConnected Then
Winsock1.SendData strSQL
DoEvents
End If
End Sub
' 服务器收到查询请求并执行
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strBuffer As String
Dim arrData() As Byte
Dim objRec As Recordset
Winsock1.GetData strBuffer, vbString
Set objRec = GetRecordset(strBuffer) ' 执行接受到的查询,其中GetRecordset方法执行SQL语句并返回一记录集
arrData() = RsToBin(objRec) ' 记录集转换成字节数组
Winsock1.SendData arrData ' 送回客户段
DoEvents
End Sub
' 客户端收到响应
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim arrData() As Byte
Dim objRec As Recordset
Winsock1.GetData arrData, vbArray + vbByte
Set objRec = BinToRs(arrData) ' 还原记录集
Set DataGrid1.DataSource = objRec ' 显示数据
End Sub
这些代码只是说明大致的方法,实际上接受数据时还要处理何时接受完成,接受完了以后才能还原成记录集。
对于记录集和字节数组相互转换的函数 请引用ADO
Public Function RsToBin(Rs As Recordset) As Variant
Dim objStream As Stream
Set objStream = New Stream
objStream.Open
objStream.Type = adTypeBinary
Rs.Save objStream, adPersistADTG
objStream.Position = 0
RsToBin = objStream.Read()
Set objStream = Nothing
End Function
Public Function BinToRs( vData As Variant) As Recordset
Dim objStream As Stream
Dim objRs As Recordset
Set objRs = New Recordset
Set objStream = New Stream
objStream.Open
objStream.Type = adTypeBinary
objStream.Write vData
objStream.Position = 0
objRs.Open objStream
Set BinToRs = objRs
Set objRs = Nothing
Set objStream = Nothing
End Function
Dim objStream As Stream
Set objStream = New Stream
objStream.Open
objStream.Type = adTypeBinary
Rs.Save objStream, adPersistADTG
objStream.Position = 0
RsToBin = objStream.Read()
Set objStream = Nothing
End Function
Public Function BinToRs( vData As Variant) As Recordset
Dim objStream As Stream
Dim objRs As Recordset
Set objRs = New Recordset
Set objStream = New Stream
objStream.Open
objStream.Type = adTypeBinary
objStream.Write vData
objStream.Position = 0
objRs.Open objStream
Set BinToRs = objRs
Set objRs = Nothing
Set objStream = Nothing
End Function
文章评论
[以下网友留言只代表其个人观点,不代表中华网的观点或立场]