DataSetExtension - C# DataSet对象持久化到本地文件
作者:C/S框架网|www.csframewo  发布日期:2021/11/10 16:29:13
  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





C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇