序列化DataTable
序列化DataTable
主要是为了实现下次启动项目的时候能读取上次保存的对象信息。通俗点就是把一个对象保存起来,在特别的时候在把这个还原出来。在C#中常见的序列化的方法主要也有三个:BinaryFormatter、SoapFormatter、XML序列化 。今天涉及到的主要是XML序列化,就DataTable的内容序列化保存。
/// <summary>
/// DataTable序列化
/// </summary>
/// <param name="dt">需要序列化的DataTable</param>
/// <param name="path">路径</param>
public void Serializer(DataTable dt,string path)
{
XmlSerializer serializer = new XmlSerializer(typeof(System.Data.DataTable));
System.Xml.XmlWriter writer= System.Xml.XmlWriter.Create(path);
serializer.Serialize(writer, dt);
}
//反序列化
private void InitData(string filePath)
{
XmlSerializer serializer = new XmlSerializer(typeof(System.Data.DataTable));
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.None);
DataTable dt = (DataTable)serializer.Deserialize(fs);
for (int i = 0; i < dt.Rows.Count; i++)
{
int j = dgvDeviceInfo.Rows.Add();
dgvDeviceInfo.Rows[j].SetValues(dt.Rows[i]["设备ID"].ToString(),
dt.Rows[i]["序号"].ToString(),
dt.Rows[i]["设备名称"].ToString(),
dt.Rows[i]["编号"].ToString(),
dt.Rows[i]["连接信息"].ToString(),
dt.Rows[i]["备注"].ToString(),
dt.Rows[i]["TagID"].ToString());
}
}