我正在尝试编写一个函数来将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'不是有效路径。请确保路径名拼写正确并且您已连接到文件所在的服务器驻留。“}
有人能指出我正确的方向吗?我在操作控制台应用程序方面经验有限,所以我可能会犯一些格式错误。谢谢
答案 0 :(得分:3)
在项目中创建一个名为'Data'的文件夹。
这不起作用。您的程序正在项目的bin \ Debug子目录中运行。它没有Data子目录。您必须使用..\..\Data\Positions.csv
来查找该文件。
嗯,这样可以立即解决您的问题,但是一旦将程序复制到另一台计算机上就不会有用。那里不会有..\..\Data
目录。考虑一下您的用户将如何告诉您.csv文件所在的位置。使用OpenFileDialog的GUI是一种友好的方式,但与控制台应用程序不兼容。标准方法是传递命令行参数。 Environment.CommandLine。与典型用户不太兼容。你必须自己权衡这些选择。