Is it possible to store the data in a data table in the hard disk instead of
the memory
?默认情况下,当数据表被填充时,表格(和
数据)将保留在内存中。是否可以保存这些数据
除记忆之外的另一种媒介?一切都会保持不变但是
我将其存储在内存中,而不是填满数据表
将它存放在硬盘中的某个位置。
答案 0 :(得分:4)
System.Data.DataTable实现了ISerializable,所以这并不大 挑战:以下示例使用二进制序列化
使用System.Runtime.Serialization.Formatters.Binary;
[...]
//Create DataTable and Serialize
private void button1_Click(object sender, System.EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("uid");
dt.Columns.Add("test");
for (int i = 0; i < 10; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = string.Format("test{0}", i);
dt.Rows.Add(dr);
}
FileStream fs = new FileStream(@"C:\test.bin", FileMode.Create);
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, dt);
fs.Close();
}
//Deserialize DataTable from File
private void button2_Click(object sender, System.EventArgs e)
{
FileStream fs = new FileStream(@"C:\test.bin", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
DataTable dt = (DataTable) bf.Deserialize(fs);
fs.Close();
foreach (DataRow dr in dt.Rows)
{
Debug.WriteLine(dr[0].ToString());
}
}
答案 1 :(得分:1)
DataTable类有一个名为WriteXml的方法,它有许多重载,有助于将其内容写入磁盘
以最简单的形式,你可以写这一行
myDataTable.WriteXml(somePathAndFileNameXML);
但是,也许更好的方法是允许编写模式数据和表数据的方法
myDataTable.WriteXml.WriteXml(somePathAndFileNameXML, XmlWriteMode.WriteSchema);
使用ReadXml方法
也可以进行相反的操作答案 2 :(得分:0)
您可以将其写入磁盘并将其存储在文件或数据库中,但必须将其加载到内存中,以便程序能够与其进行交互。