• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wayde


博客园    首页    新随笔    联系   管理    订阅  订阅
记录学习-Binary Serialization of a DataSet
Imports System.Data
Imports System.Data.SqlClient
Imports System.Runtime.Serialization
Imports System.IO
Imports System.Xml

Private Sub cmdCreate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCreate.Click
        
Dim cs As String = "Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind"
        
Dim sql As String = "SELECT * FROM Employees"
        
Dim cn As New SqlConnection(cs)
        
Dim cmd As New SqlCommand(sql, cn)
        
Dim da As New SqlDataAdapter(cmd)
        da.Fill(ds, 
"TestTable")
        
Me.WriteBinary("C:\testbinary.bin", ds)
        ds.WriteXml(
"C:\testbinary.xml")
End Sub

Public Sub WriteBinary(ByVal FileName As String, ByVal ds As DataSet)
        ds.RemotingFormat 
= SerializationFormat.Binary
        
Dim myFormatter As IFormatter = New Formatters.Binary.BinaryFormatter
        
Dim myStream As Stream = New FileStream(FileName, FileMode.Create)
        myFormatter.Serialize(myStream, ds)
End Sub

Public Function ReadBinary(ByVal FileName As String) As DataSet
        
Dim ds As New DataSet
        ds.RemotingFormat 
= SerializationFormat.Binary
        
Dim myFormatter As IFormatter = New Formatters.Binary.BinaryFormatter
        
Dim myStream As Stream = New FileStream(FileName, FileMode.Open)
        ds 
= CType(myFormatter.Deserialize(myStream), DataSet)
        
Return ds
End Function

Private Sub btnDeserialize_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeserialize.Click
        
Dim ds As New DataSet
        ds 
= Me.ReadBinary("C:\testbinary.bin")
        Debug.Assert(ds.Tables.Count 
> 1, "Ain't go no data")
        Debug.Assert(ds.Tables(
0).Rows.Count > 1, "Ain't got no rows")
End Sub

/************************************************/
'
二进制压缩数据集
/*************************
dim bArrayResult() as byte = new byte(){}
ds.RemotingFormat = SerializationFormat.Binary
dim myStream as Stream = new MemoryStream()
Dim myFormatter As IFormatter = New Formatters.Binary.BinaryFormatter
myFormatter.Serialize(myStream, ds)
bArrayResult = myStream.ToArray()
myStream.Close()
*************************/

'
反序列化 得到DataSet
/*************************
dim bUserData() as byte = bArrayResult
dim myStream as Stream = new MemoryStream(bUserData)
Dim myFormatter As IFormatter = New Formatters.Binary.BinaryFormatter
dim objResult as object = myFormatter.Deserialize(ms)
dim dsResult as DataSet = DirectCast(objResult, DataSet)
myStream.Close()
*************************/
posted on 2007-10-18 14:06  wayde  阅读(403)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3