gpt4 book ai didi

c# - 使用OLEDB从Stream读取AccessFile到DataSet

转载 作者:太空狗 更新时间:2023-10-29 23:32:44 27 4
gpt4 key购买 nike

我使用 Oledb 将 AccessFile(.accdb) 读取到数据集,我不知道表名或列,常规实现是:

public void GetAccessDB(string filepath){

this.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " + filepath;
// get Table Names
this.TableNames = new List<string>();
using (System.Data.OleDb.OleDbConnection oledbConnection = new System.Data.OleDb.OleDbConnection(this.ConnectionString))
{
oledbConnection.Open();
System.Data.DataTable dt = null;
dt = oledbConnection.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
foreach (System.Data.DataRow row in dt.Rows)
{
string strSheetTableName = row["TABLE_NAME"].ToString();
if (row["TABLE_TYPE"].ToString() == "TABLE")
this.TableNames.Add(strSheetTableName);
}
oledbConnection.Close();
}


this.Dataset = new System.Data.DataSet();
using (System.Data.OleDb.OleDbConnection oledbConnection = new System.Data.OleDb.OleDbConnection(this.ConnectionString))
{
foreach (string table in this.TableNames)
{
string command = string.Format("SELECT * FROM {0};", table);
using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(command, oledbConnection))
{
cmd.CommandType = System.Data.CommandType.Text;
oledbConnection.Open();
System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();
this.Dataset.Load(dr, System.Data.LoadOption.OverwriteChanges, table);
oledbConnection.Close();
}
}
}
}

但是我需要从Stream中获取Access File,而且我不能将它临时写入磁盘,所以你有什么建议?

我需要 GetAccessDB(Stream AccessFile) 的重载吗?我搜索并找到 This ,但这对我来说并不清楚,我最终需要通过 Access 文件中的所有表获取数据集。

有人知道吗?

最佳答案

我不知道 OleDb 中有任何用于内存数据库的 api 函数。也许,你能安装一个 RAMDisk 吗?

关于c# - 使用OLEDB从Stream读取AccessFile到DataSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14475561/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com