查询结果返回DataTable后,然后把其绑定到grid,现在想做的是把这个DataTable保存下来,下次用户就可以直接把这个DataTable读取出来,想用Sql server保存,别的方法也可以,就是要保存到硬盘上,不知道有什么方法?

解决方案 »

  1.   

    for example://从数据库中取出的数据
                SqlConnection con = new SqlConnection("server=.;database=student;uid=sa;pwd=0421");
                SqlDataAdapter sda = new SqlDataAdapter("select * from studentDetails", con);
                DataTable dt = new DataTable("student");
                sda.Fill(dt);            //写入xml文件
                dt.WriteXml(@"../../test.xml", XmlWriteMode.WriteSchema);            //读出
                dt = new DataTable();
                dt.ReadXml(@"../../test.xml");
      

  2.   

    也可以参见MSDN:
    ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref4/html/M_System_Data_DataTable_ReadXml_1_16219e3a.htm例子如下:下面的示例创建一个包含两列、十行的 DataTable。该示例将 DataSet 架构和数据写入磁盘中。该示例创建第二个 DataTable,并调用 ReadXml 方法来使用架构和数据填充此表。private static void DemonstrateReadWriteXMLDocumentWithString()
    {
        DataTable table = CreateTestTable("XmlDemo");
        PrintValues(table, "Original table");    string fileName = "C:\\TestData.xml";
        table.WriteXml(fileName, XmlWriteMode.WriteSchema);    DataTable newTable = new DataTable();
        newTable.ReadXml(fileName);    // Print out values in the table.
        PrintValues(newTable, "New table");
    }private static DataTable CreateTestTable(string tableName)
    {
        // Create a test DataTable with two columns and a few rows.
        DataTable table = new DataTable(tableName);
        DataColumn column = new DataColumn("id", typeof(System.Int32));
        column.AutoIncrement = true;
        table.Columns.Add(column);    column = new DataColumn("item", typeof(System.String));
        table.Columns.Add(column);    // Add ten rows.
        DataRow row;
        for (int i = 0; i <= 9; i++)
        {
            row = table.NewRow();
            row["item"] = "item " + i;
            table.Rows.Add(row);
        }    table.AcceptChanges();
        return table;
    }private static void PrintValues(DataTable table, string label)
    {
        Console.WriteLine(label);
        foreach (DataRow row in table.Rows)
        {
            foreach (DataColumn column in table.Columns)
            {
                Console.Write("\t{0}", row[column]);
            }
            Console.WriteLine();
        }
    }