DataSetExtension - C# DataSet对象持久化到本地文件
DataSetExtension - C# DataSet对象持久化到本地文件
DataSet扩展类, 序列化DataSet对象及数据到本地文件,包括Dataset结构元数据及完整的记录状态。
DataSetExtension.cs
C# Code:
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSFrameworkV5.DemoLibrary
{
/// <summary>
/// DataSet扩展类, 序列化DataSet对象数据到本地文件,包括元数据及完整的记录状态。
/// </summary>
public static class DataSetExtension
{
/// <summary>
/// 加载本地文件
/// </summary>
/// <param name="dataSet">DataSet实例</param>
/// <param name="file">本地文件</param>
public static void FromFile(this DataSet dataSet, string file)
{
var str = File.ReadAllText(file);
var splited = str.Split('|');
using (var msSchema = new MemoryStream(Convert.FromBase64String(splited[0])))
{
using (var msData = new MemoryStream(Convert.FromBase64String(splited[1])))
{
dataSet.ReadXmlSchema(msSchema);//加载元数据
dataSet.ReadXml(msData);//读取表数据
}
}
}
/// <summary>
/// Dataset序列化为本地文件
/// </summary>
/// <param name="dataSet">DataSet实例</param>
/// <param name="file">本地文件</param>
/// <returns></returns>
public static bool ToFile(this DataSet dataSet, string file)
{
using (MemoryStream msSchema = new MemoryStream())
{
dataSet.WriteXmlSchema(msSchema);
using (MemoryStream msData = new MemoryStream())
{
dataSet.WriteXml(msData, XmlWriteMode.DiffGram);
//将Dataset分隔为两段,表结构元数据|数据, 然后将字符串转换为Base64String
var str = Convert.ToBase64String(msSchema.ToArray()) + "|" + Convert.ToBase64String(msData.ToArray());
//写入本地文件
File.WriteAllText(file, str);
return true;
}
}
}
/// <summary>
/// 将Base64String字符串转换为DataSet对象
/// </summary>
/// <param name="dataSet">DataSet对象</param>
/// <param name="base64str">Base64String字符串</param>
public static void FromBase64String(this DataSet dataSet, string base64str)
{
var splited = base64str.Split('|');
using (var msSchema = new MemoryStream(Convert.FromBase64String(splited[0])))
{
using (var msData = new MemoryStream(Convert.FromBase64String(splited[1])))
{
dataSet.ReadXmlSchema(msSchema);
dataSet.ReadXml(msData);
}
}
}
/// <summary>
/// Dataset序列化为Base64String字符串
/// </summary>
/// <param name="dataSet">Dataset对象</param>
/// <returns></returns>
public static string ToBase64String(this DataSet dataSet)
{
using (MemoryStream msSchema = new MemoryStream())
{
dataSet.WriteXmlSchema(msSchema);
using (MemoryStream msData = new MemoryStream())
{
dataSet.WriteXml(msData, XmlWriteMode.DiffGram);
return Convert.ToBase64String(msSchema.ToArray()) + "|" + Convert.ToBase64String(msData.ToArray());
}
}
}
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSFrameworkV5.DemoLibrary
{
/// <summary>
/// DataSet扩展类, 序列化DataSet对象数据到本地文件,包括元数据及完整的记录状态。
/// </summary>
public static class DataSetExtension
{
/// <summary>
/// 加载本地文件
/// </summary>
/// <param name="dataSet">DataSet实例</param>
/// <param name="file">本地文件</param>
public static void FromFile(this DataSet dataSet, string file)
{
var str = File.ReadAllText(file);
var splited = str.Split('|');
using (var msSchema = new MemoryStream(Convert.FromBase64String(splited[0])))
{
using (var msData = new MemoryStream(Convert.FromBase64String(splited[1])))
{
dataSet.ReadXmlSchema(msSchema);//加载元数据
dataSet.ReadXml(msData);//读取表数据
}
}
}
/// <summary>
/// Dataset序列化为本地文件
/// </summary>
/// <param name="dataSet">DataSet实例</param>
/// <param name="file">本地文件</param>
/// <returns></returns>
public static bool ToFile(this DataSet dataSet, string file)
{
using (MemoryStream msSchema = new MemoryStream())
{
dataSet.WriteXmlSchema(msSchema);
using (MemoryStream msData = new MemoryStream())
{
dataSet.WriteXml(msData, XmlWriteMode.DiffGram);
//将Dataset分隔为两段,表结构元数据|数据, 然后将字符串转换为Base64String
var str = Convert.ToBase64String(msSchema.ToArray()) + "|" + Convert.ToBase64String(msData.ToArray());
//写入本地文件
File.WriteAllText(file, str);
return true;
}
}
}
/// <summary>
/// 将Base64String字符串转换为DataSet对象
/// </summary>
/// <param name="dataSet">DataSet对象</param>
/// <param name="base64str">Base64String字符串</param>
public static void FromBase64String(this DataSet dataSet, string base64str)
{
var splited = base64str.Split('|');
using (var msSchema = new MemoryStream(Convert.FromBase64String(splited[0])))
{
using (var msData = new MemoryStream(Convert.FromBase64String(splited[1])))
{
dataSet.ReadXmlSchema(msSchema);
dataSet.ReadXml(msData);
}
}
}
/// <summary>
/// Dataset序列化为Base64String字符串
/// </summary>
/// <param name="dataSet">Dataset对象</param>
/// <returns></returns>
public static string ToBase64String(this DataSet dataSet)
{
using (MemoryStream msSchema = new MemoryStream())
{
dataSet.WriteXmlSchema(msSchema);
using (MemoryStream msData = new MemoryStream())
{
dataSet.WriteXml(msData, XmlWriteMode.DiffGram);
return Convert.ToBase64String(msSchema.ToArray()) + "|" + Convert.ToBase64String(msData.ToArray());
}
}
}
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761

参考文档:
C# DataSet与XML互转|C/S开发框架
tb_DataSet表(账套数据库配置表)详解-C/S开发框架
tb_DataSet表(账套配置表)详解
C# DataSet和DataTable
DataTable已属于另一个DataSet
系统库tb_DataSet表RemoteServerIP与LocalServerIP有何区别
加密解密tb_DataSet/tb_MyUser表的密码|C/S框架网
开发框架多账套连接表tb_Dataset以及分配用户的账套权限
[下载]DataSet Remoting(DataSetSurrogate)
C#DataSet监视工具2.0(DataSet Watch 2.0)
新增功能:保存前本地缓存数据,资料暂存解决方案 - Winform开发框架
CSFramework开发框架ADO.NET学习要点
CSFramework.EF.PostgreSql数据库组件 PostgreSql数据库测试报告|C/S开发框架
CSFramework WebApi开发框架集成PostgreSql数据库及测试报告|C/S开发框架
C/S开发框架两种后台连接:直连模式与WebApi模式(ADODirect与WebApi)|C/S开发框架
C/S开发框架:系统数据库与账套数据库合并解决方案|C/S开发框架
C# DataSet与XML互转|C/S开发框架
tb_DataSet表(账套数据库配置表)详解-C/S开发框架
tb_DataSet表(账套配置表)详解
C# DataSet和DataTable
DataTable已属于另一个DataSet
系统库tb_DataSet表RemoteServerIP与LocalServerIP有何区别
加密解密tb_DataSet/tb_MyUser表的密码|C/S框架网
开发框架多账套连接表tb_Dataset以及分配用户的账套权限
[下载]DataSet Remoting(DataSetSurrogate)
C#DataSet监视工具2.0(DataSet Watch 2.0)
新增功能:保存前本地缓存数据,资料暂存解决方案 - Winform开发框架
CSFramework开发框架ADO.NET学习要点
CSFramework.EF.PostgreSql数据库组件 PostgreSql数据库测试报告|C/S开发框架
CSFramework WebApi开发框架集成PostgreSql数据库及测试报告|C/S开发框架
C/S开发框架两种后台连接:直连模式与WebApi模式(ADODirect与WebApi)|C/S开发框架
C/S开发框架:系统数据库与账套数据库合并解决方案|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
