将DataTable数据存储在硬盘中

Ama*_*man 3 c#-4.0

是否可以将数据存储在硬盘而不是 内存中的DataTable中?默认情况下,当数据表被填充时,表(和数据)将保留在内存中。除了内存之外,是否可以将这些数据保存在其他介质中?一切都将保持不变,但我不会将数据表存储在内存中来填充数据表,而是将其存储在硬盘驱动器中的某个位置。

Ama*_*man 5

System.Data.DataTable 实现 ISerialized,因此这不是什么大挑战:以下示例使用二进制序列化

使用 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());
    }
}
Run Code Online (Sandbox Code Playgroud)