2017-06-19 17 views
0

看來我的文件目錄存在問題。我從Stack Overflow的1篇文章中瞭解到,在我的文件目錄中有一個隱藏的[enter]或\ n。我不明白。這裏是我的代碼C#+訪問錯誤:無效的文件名

我的連接字符串:

con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=‪C:\CRDB\crdb.accdb; 
Persist Security Info=False;"; 

,這裏是我在做什麼:

public void loadTable() 
     { 
      try 
      { 
       con.Open(); 
       OleDbCommand com = new OleDbCommand(); 
       com.Connection = con; 
       string query = "SELECT * FROM ChequeMasterList"; 
       com.CommandText = query; 

       OleDbDataAdapter da = new OleDbDataAdapter(com); 
       DataTable dt = new DataTable(); 
       da.Fill(dt); 
       dataGridView1.DataSource = dt; 

       con.Close(); 
      } 
      catch(Exception ex) 
      { 
       MessageBox.Show("Error: " + ex.Message); 
      } 
     } 

正如你可以看到它是非常簡單的。我只是想加載我的數據庫到我的DataGridView,但我一直收到此錯誤:

enter image description here

我已經做了很多時下C#系統,這是我第一次遇到了這個問題。你有什麼想法?

+0

聽起來像您的Access數據庫不是您認爲它的地方,或者它鎖定的東西使它無法訪問。確保你構建的是32位,並且不要在Load事件中運行代碼 - 使用構造函數。 – LarsTech

+0

@LarsTech你是什麼意思?嗯......這怎麼會發生?還有你的意思是建立到32位?對不起,這些條款似乎對我來說是新的。我是一名休閒程序員,只是把它當做愛好。 –

+0

@LarsTech我試過使用Access的默認路徑,它在我的文檔中,但仍然有相同的錯誤。嘗試重命名文件夾和文件,仍然是相同的錯誤。我也試圖改變我的數據庫的位置,但仍然有同樣的錯誤。請幫忙。 –

回答

0

轉義碼\ c在文件名中是非法的。使用\\ c和\\ C。你引用的字符串不是你認爲的那樣。

+0

對不起,我沒有明白。什麼逃生代碼?我的路徑應該是什麼樣子? –

+0

我做了一點研究,即時通訊仍然不確定是否正確。我已將路徑更改爲'C:\ CRDB \\ crdb',但仍然出現相同的錯誤。如果我錯了,請糾正我。謝謝。 –

+0

我真的不確定,如果這個答案是實際問題(新的C#和文字字符串的工作方式我自己),但你用以下連接字符串嘗試它:'「Provider = Microsoft.ACE.OLEDB.12。0;數據源= C:\\ CRDB \\ crdb.accdb; 堅持安全信息=假;「'也可能是同樣的事情沒有@在它的前面? –

相關問題