2011-06-01 92 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
相關問題