2011-06-01 46 views
2
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; 
     } 

当同一个文件被命名为.csv它不会给我一个错误;但是当我将它重命名为.log它说Cannot update. Database or object is read-only.adapter.Fillc#datatable无法更新。数据库或对象是只读的

这是一个编译器错误?

回答

-1

不,这不是一个编译器错误。如果有的话,它是来自OleDb Jet引擎的错误。我在过去遇到过Jet的问题,所以我通常会避免它。您可以使用TextFieldParser节省大量调试时间。

+0

注意解释投票吗? – ChrisWue 2011-06-02 03:38:32

-1

* .LOG被禁用的扩展,据我所知只有机器上的方法是更改​​注册表,将运行这段代码,请参阅Microsoft知识库中article

+0

指出,我给它改名到.log1还是一样的味精 – 2011-06-01 23:49:03

+0

还试图RRR除了CSV – 2011-06-01 23:49:47

+0

其不采取anythign你加r中日志扩展egistry?我知道这听起来不可信,但你必须将它添加到注册表键已禁用的扩展,因为有一个!在前面,这意味着没有,如果!使用这些是允许的扩展名。更奇怪的是,这里有一个详细的解释:http://access.mvps.org/access/bugs/bugs0046.htm – 2011-06-01 23:55:39

1

一个旧的帖子,但我刚刚进入这个问题。 请参考这篇文章:https://support.microsoft.com/en-us/kb/245407

长话短说:Jet Engine在读取CSV文件(Extended properties = TEXT等)时只接受几个文件扩展名。

解决方案:

  1. 看完
  2. 时重命名文件temp文件夹与另一mecanism比JET阅读(标准File.io.ReadAllLines)
  3. 添加在Windows注册表中的延伸由安东尼奥Bukala
相关问题