2017-06-19 12 views
0

ファイルディレクトリに問題があるようです。私はスタックオーバーフローの1つの投稿から、隠された[enter]または\ nが私のファイルのディレクトリにあることを知りました。私はそれを理解していない。ここに私のコードC#+アクセスエラー:無効なファイル名

私の接続文字列は次のとおりです。

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); 
      } 
     } 

をあなたはそれが非常に簡単で見ることができるように:

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

、ここでは、私がやっているものです。私はちょうど私のDataGridView上に自分のデータベースをロードしたいのですが、私はこのエラーを取得し続ける:

enter image description here

私は、最近のC#システムの多くを行ってきた、これは私がこの問題に遭遇したの初めてです。あなたはなにか考えはありますか?

+0

あなたのアクセスDBのようなサウンドは、あなたが思っている場所ではなく、何かがロックされてアクセスできない状態になっています。 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; セキュリティ情報を維持する= False; "また、@の前に@が付いていない同じものもありますか? –

関連する問題