Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用OleDB读取CSV数据时出现文件访问错误_C#_.net_Csv_Oledb - Fatal编程技术网

C# 使用OleDB读取CSV数据时出现文件访问错误

C# 使用OleDB读取CSV数据时出现文件访问错误,c#,.net,csv,oledb,C#,.net,Csv,Oledb,我正在尝试使用OleDB 4读取CSV文件中的一些数据。我正在使用以下代码,我从各种来源复制了这些代码,表明它应该可以工作 protected virtual string ConnectionString { get { return string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='text;HDR=

我正在尝试使用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”下的路径以及临时文件夹的硬编码路径,但无论我如何尝试,都会产生相同的错误。

在连接字符串中,必须将
数据源设置为包含CSV文件的文件夹,然后您必须
从文件名.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();

在连接字符串中,必须将
数据源
设置为包含CSV文件的文件夹,然后必须
从文件名.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();

你解决问题了吗?你解决问题了吗?