private void Form1_Load(object sender, EventArgs e)
{
GetDataTable(@"C:\Documents and Settings\agordon\Desktop\ACTIVITYEX.log");
}
public System.Data.DataTable GetDataTable(string strFileName)
{
System.Data.OleDb.OleDbConnection conn =
new System.Data.OleDb.OleDbConnection
("Provider=Microsoft.Jet.OleDb.4.0; Data Source = "
+ System.IO.Path.GetDirectoryName(strFileName)
+ ";Extended Properties = \"Text;HDR=YES;FMT=TabDelimited\"");
conn.Open();
string strQuery = "SELECT * FROM [" + System.IO.Path.GetFileName(strFileName) + "]";
System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
System.Data.DataTable ds = new System.Data.DataTable("CSV File");
adapter.Fill(ds);
return ds;
}
当SAME文件命名为.csv
时,它不会给我一个错误;但是,当我将其重命名为.log
时,它会在Cannot update. Database or object is read-only.
上显示adapter.Fill
这是编译错误吗?
答案 0 :(得分:1)
一篇旧帖子,但我刚刚介入了这个问题。 请参阅此文章:https://support.microsoft.com/en-us/kb/245407
长话短说:Jet Engine在读取CSV文件时只接受一些文件扩展名(扩展属性= TEXT等)。
解决方案:
答案 1 :(得分:-1)
* .log已禁用扩展,AFAIK唯一的方式是在运行此代码的计算机上更改注册表,请参阅MS知识库article
答案 2 :(得分:-1)
不,这不是编译器错误。如果是OleDb Jet引擎的任何错误。我过去遇到过Jet的问题,所以我通常会避免它。使用TextFieldParser可以节省大量的调试时间。