访问控制台应用程序中的文件夹

时间:2011-02-02 22:27:57

标签: c# console-application

我正在尝试编写一个函数来将csv内容读入数据表中 我得到一个关于文件路径的例外,并想知道我做错了什么。 我所做的就是创建控制台应用程序并在项目中创建一个名为“Data”的文件夹。

public DataTable ReadCSV(string filename)
{
        DataTable dt = new DataTable();
        string sql = "SELECT * FROM " + filename;
        string path = "Data\\";
        string connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + filename + ";" + "Extended Properties='text;FMT=Delimited(;);HDR=YES'";
        OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connstring);
        System.Data.OleDb.OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);

        try
        {
            conn.Open();
            da.Fill(dt);
        }
        catch (Exception ex)
        {
            Console.WriteLine(filename + "not found");
        }

        finally
        {
            conn.Close();
        }
        return dt;
    }

}

我在调试模式下运行时在Text可视化工具中的连接字符串:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Data \ Positions.csv; Extended Properties ='text; FMT = Delimited(;); HDR = YES'

我得到了一个例外

base {System.Data.Common.DbException} = {“'Data \ Positions.csv'不是有效路径。请确保路径名拼写正确并且您已连接到文件所在的服务器驻留。“}

有人能指出我正确的方向吗?我在操作控制台应用程序方面经验有限,所以我可能会犯一些格式错误。谢谢

1 个答案:

答案 0 :(得分:3)

  

在项目中创建一个名为'Data'的文件夹。

这不起作用。您的程序正在项目的bin \ Debug子目录中运行。它没有Data子目录。您必须使用..\..\Data\Positions.csv来查找该文件。

嗯,这样可以立即解决您的问题,但是一旦将程序复制到另一台计算机上就不会有用。那里不会有..\..\Data目录。考虑一下您的用户将如何告诉您.csv文件所在的位置。使用OpenFileDialog的GUI是一种友好的方式,但与控制台应用程序不兼容。标准方法是传递命令行参数。 Environment.CommandLine。与典型用户不太兼容。你必须自己权衡这些选择。