数据表到mdb

时间:2010-01-08 04:28:11

标签: c# datatable

我在C#中有一个内存DataTable。我想将其本地.mdb副本保存到我的文件系统并进行检索。此C#datatable捕获excel公式的结果并保存。当再次打开相同的excel文件时,我想要加载数据表。这个表就像我想要重用的本地缓存。

如何将C#Datatable文件写入.mdb文件并在再次加载具有相同名称的excel文件时加载特定表?

1 个答案:

答案 0 :(得分:2)

使用ADO.NET

ADO.NET架构(overviewsample

许多样本(如下所示)都可以在互联网上通过谷歌搜索ADO.NET的关键字获得(其中许多都在这个答案中)。

一般流程是决定与MSAccess兼容的数据提供者。在这种情况下,我们在命名空间using System.Data.OleDb;

中选择OleDb

一般的ADO.NET流程是

  • 创建Connection object - 登录数据库的位置和安全参数
  • 创建Command object来表示数据库操作(例如,插入,更新,删除,选择)这也是SQL的用武之地。
  • 通过连接发出命令(Execute it)以影响数据库(或从中查询数据)
  • 必须在数据库上重复命令
  • 关闭您的连接。

为Access创建适当的连接字符串,使用GUI工具(例如visual studio)构建它,或者从ConnectionString.com (Access page)

这样的网站中找到它

以下示例非常通用,您需要根据需要对其进行自定义。如何做到这一点有很多变化。 为简单起见,这个答案选择了一个简短的手段。

using System; 
using System.Data;   // for DataTable, DataSet
using System.Data.OleDb;  // for ADO.NET OLEDb provider

void SaveMyDataTable(DataTable datTable) {

    string strConnection = "your connection string to Access";

    // Make connection.
    OleDbConnection conn = new OleDbConnection(strConnection);
    conn.Open();

    try {
        OleDbCommand cmd = conn.CreateCommand();

        // Create table in Access.
        cmd.CommandText = "CREATE TABLE SomeTable("
                + "Field1 int,"
                + "ThisField varchar(255)"
                + "ThatField varchar(255)"
                + ")";
        cmd.ExecuteNonQuery();

        /* Insert data from datatable.
         * (You'll have to pull data out of your DataTable row
         *  and use it here.)
         */

        cmd.CommandText = "INSERT INTO SomeTable VALUES (1, 'a','b')";
        cmd.ExecuteNonQuery();
        cmd.CommandText = "INSERT INTO SomeTable VALUES (3, 'd','e')";
        cmd.ExecuteNonQuery();
        //etc... (maybe make a loop over the rows in your DataTable)

        conn.Close();
    }
    finally {
        conn.Close();
    }

}

另一种ADO.NET方式

ADO.NET中的替代方案

OleDbDataAdapter类 - ADO.NET体系结构的一部分用作包含DataTables的DataSet和兼容的Ole db数据源(如Access)之间的适配器。

这有点难以设置,你需要研究它。