我在C#中有一个内存DataTable。我想将其本地.mdb副本保存到我的文件系统并进行检索。此C#datatable捕获excel公式的结果并保存。当再次打开相同的excel文件时,我想要加载数据表。这个表就像我想要重用的本地缓存。
如何将C#Datatable文件写入.mdb文件并在再次加载具有相同名称的excel文件时加载特定表?
答案 0 :(得分:2)
许多样本(如下所示)都可以在互联网上通过谷歌搜索ADO.NET的关键字获得(其中许多都在这个答案中)。
一般流程是决定与MSAccess兼容的数据提供者。在这种情况下,我们在命名空间using System.Data.OleDb;
一般的ADO.NET流程是
为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中的替代方案
OleDbDataAdapter类 - ADO.NET体系结构的一部分用作包含DataTables的DataSet和兼容的Ole db数据源(如Access)之间的适配器。
这有点难以设置,你需要研究它。