无法使用OleDB打开csv文件

时间:2013-12-17 13:46:30

标签: c# visual-studio-2010 csv oledb

我是新手,所以我无法找到解决问题的方法。我想使用OleDB读取DataTable中的.csv文件。这是我的代码

string file = "D:\\MyFile.csv";
        string dir = Path.GetDirectoryName(file);

        String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dir + ";Extended Properties='text;HDR=Yes;FMT=Delimited'";
        OleDbConnection objConn = new OleDbConnection(sConnectionString);

        objConn.Open();
        DataTable dt = new DataTable();
        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + file + "]", objConn);
        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
        objAdapter1.SelectCommand = objCmdSelect;
        objAdapter1.Fill(dt);
        objConn.Close();

但是我收到一个错误:Microsoft Jet数据库引擎找不到对象'D:\ MyFile.csv'。确保对象存在,并且您正确拼写其名称和路径名称。

文件在正确的位置,所以你能告诉我可能是什么问题吗?

3 个答案:

答案 0 :(得分:3)

将文件放在D:\中的某个文件夹中,然后重试

GetDirectoryName函数通常在使用

之类时返回''

GetDirectoryName('C:\ asd.txt')返回''所以请使用它

GetDirectoryName('C:\ myfol \ asd.txt')它将返回'C:\ myfol'

并且你的代码正在整理目录名,所以很可能你正在整理一个空字符串''

在线 1. String sConnectionString =“Provider = Microsoft.Jet.OLEDB.4.0; Data Source =”+ dir +“; 2. sConnectionString =“Provider = Microsoft.Jet.OLEDB.4.0 .; Data Source =''; // as dir is''

检查 http://msdn.microsoft.com/en-us/library/system.io.path.getdirectoryname(v=vs.110).aspx

寻求更多帮助。

答案 1 :(得分:0)

您需要从此行中的文件名中删除路径:

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + file + "]", objConn);

应该是:

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + Path.GetFileName(file) + "]", objConn);

在连接字符串中,您告诉引擎目录,在命令中告诉引擎要使用的文件(该路径可以看作是数据库的等价物,该文件相当于一个表)。

您可以按照以下方式改进:

string file = "D:\\MyFile.csv";
string dir = Path.GetDirectoryName(file);
string name = Path.GetFileName(file);

String sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dir + ";Extended Properties='text;HDR=Yes;FMT=Delimited'";
...
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [" + name + "]", objConn);
...

答案 2 :(得分:0)

在select查询中尝试使用实际文件名。

<强> SELECT * FROM [MyFile.csv]

OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [MyFile.csv]", objConn);