C# 使用OleDB读取CSV数据时出现文件访问错误
我正在尝试使用OleDB 4读取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=
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();
你解决问题了吗?你解决问题了吗?