簡體   English   中英

使用OleDB讀取CSV數據時出現文件訪問錯誤

[英]File Access Error using OleDB to read CSV data

我正在嘗試使用OleDB 4讀取CSV文件中的一些數據。 我正在使用以下代碼,這些代碼是我從各種來源復制來的,表明它應該可以工作。

    protected virtual string ConnectionString
    {
        get
        {
            return string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='text;HDR=Yes;FMT=Delimited'", _path);
        }
    }

    public void ReadData()
    {
                using (OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT [Name] FROM SomeTable", ConnectionString))
                {
                    using (DataTable table = new DataTable())
                    {
                        adapter.Fill(table);
                        foreach (DataRow row in table.Rows)
                        {
                              //Do something with the data
                        } 
                    }
                }
     }

我正在嘗試使用單元測試來測試代碼,但是我在“ adapter.Fill”行中不斷收到以下異常:

“ Microsoft Jet數據庫引擎無法打開文件”。該文件已經由另一個用戶專門打開,或者您需要查看它的數據的權限。”

請任何人能給我一些線索來找出問題所在嗎? 該文件尚未被其他應用程序打開。 我試過使用“ AppDomain.CurrentDomain.BaseDirectory”下的路徑,以及到臨時文件夾的硬編碼路徑,但是無論如何,它都會給我同樣的錯誤。

在連接字符串中,必須將“ Data Source設置為包含CSV文件的文件夾,然后必須SELECT * FROM your-file-name.csv

在這里使用(並經過測試)帶有F:\\Temp\\dummy.csv的文件的示例:

var dir = @"F:\Temp";
var fn = "dummy.csv";
var cn = new OleDbConnection(
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"" + dir + "\";Extended Properties='text;HDR=Yes;FMT=Delimited(,)';");
cn.Open();
var cmd = new OleDbCommand("select * from [" + fn + "]", cn);
var rdr = cmd.ExecuteReader();
while (rdr.Read())
{
    Console.WriteLine(rdr[0] + " " + rdr[1]);
}
cn.Close();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM