基于BinaryFormatter的DataSet序列化与反序列化示例

需积分: 3 2 下载量 35 浏览量 更新于2024-12-26 收藏 1KB TXT 举报
本篇代码涉及的是.NET平台下的数据处理与序列化技术,主要围绕`DataSet`对象进行操作。DataSet是Microsoft SQL Server提供的一个用于存储和操作结构化数据的数据模型,它将数据组织成多个表格,每个表格代表一个实体,表格中的行和列对应属性和值。 首先,来看`SurrogateRead1`方法,这个方法的主要功能是从数据库中执行SQL查询获取数据,然后将结果转换为`DataSet`对象。它通过`SqlHelper.ExecuteDataset`方法连接到数据库(参数cnn),执行SQL语句("select * from t_busdocbase"),得到的结果集被存储在`DataSet`对象`ds`中。接下来,创建了一个名为`DataSetSurrogate`的自定义类,并对原始`DataSet`进行了序列化处理。这里使用了`BinaryFormatter`,这是一个.NET框架提供的序列化工具,用于将对象转换为字节数组,便于在网络传输或存储时使用。序列化后的字节数组存储在`MemoryStream`中,最后返回这个数组。 `button3_Click`方法是用户界面的一部分,当按钮被点击时,会调用Web服务接口`svs.SurrogateRead1()`来获取序列化的`byte[]`数据。接收到数据后,通过`BinaryFormatter`反序列化回`DataSetSurrogate`对象,再调用`ConvertToDataSet()`方法将其转换回标准的`DataSet`格式。这样,原始的数据库查询结果就被展示在`dataGrid1`控件中,供用户查看。同时,为了保证数据安全性和性能,原始的`MemoryStream`对象在使用完毕后被关闭。 总结来说,这段代码展示了如何在C#中使用`DataSet`进行数据获取、序列化和反序列化的过程,以及在Web服务环境下进行数据交换。它体现了.NET框架中对复杂数据结构的管理和网络通信的支持,是企业级应用程序中常见的数据处理策略之一。同时,序列化和反序列化对于分布式系统和跨平台交互是非常关键的技术。