2013-06-10 18 views
7

データベーステーブルに7つのテーブルがありますが、すべてのテーブルを表示して表示する方法がわかりません。Cでアクセスデータベースを接続する方法#

これは私のコードですが、それが何か

private void button1_Click(object sender, EventArgs e) 
{ 
    OleDbConnection conn = new OleDbConnection(); 
    String connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Tables.accdb;Persist Security Info=True"; 
    string sql = "SELECT Clients FROM Tables"; 
    conn.ConnectionString = connection; 
    conn.Open(); 
    DataSet ds = new DataSet(); 
    DataGridView dataGridView1 = new DataGridView(); 
    BindingSource bSource = new BindingSource(); 
    OleDbDataAdapter adapter = new OleDbDataAdapter(sql,conn); 
    adapter.Fill(ds); 
    //conn.Close();        
    dataGridView1.DataSource = ds; 
+0

このコードが投げているエラーは何ですか? **この情報で質問を編集してください** ** –

+0

あなたは見たことがありますかhttp://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/6fde18c2-3e82-4a75-acf5-9aa5dd2165c2/ ? –

+0

代わりに 'Provider = Microsoft.Jet.OLEDB.4.0'を使用しますか? –

答えて

13

は、あなたがその場でのDataGridViewを構築し、データソースを設定している

public void ConnectToAccess() 
{ 
    System.Data.OleDb.OleDbConnection conn = new 
     System.Data.OleDb.OleDbConnection(); 
    // TODO: Modify the connection string and include any 
    // additional required properties for your database. 
    conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;" + 
     @"Data source= C:\Documents and Settings\username\" + 
     @"My Documents\AccessFile.mdb"; 
    try 
    { 
     conn.Open(); 
     // Insert code to process data. 
    } 
     catch (Exception ex) 
    { 
     MessageBox.Show("Failed to connect to data source"); 
    } 
    finally 
    { 
     conn.Close(); 
    } 
} 

http://msdn.microsoft.com/en-us/library/5ybdbtte(v=vs.71).aspx

+0

Access 2007より古いAccessデータベースでのみ動作します – Fandango68

2

、このコードを試してみてください表示されません。それのための。それはいいですが、ホスティングフォームのコントロールコレクションにDataGridViewを追加しますか?ところで

this.Controls.Add(dataGridView1); 

コードは、ファイル名(TABLES.ACCDB)との間の混乱のビットが存在することは明らかである下方にビットコメント後

String connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\Tables.accdb;Persist Security Info=True"; 
string sql = "SELECT Clients FROM Tables"; 
using(OleDbConnection conn = new OleDbConnection(connection)) 
{ 
    conn.Open(); 
    DataSet ds = new DataSet(); 
    DataGridView dataGridView1 = new DataGridView(); 
    using(OleDbDataAdapter adapter = new OleDbDataAdapter(sql,conn)) 
    { 
     adapter.Fill(ds); 
     dataGridView1.DataSource = ds; 
     // Of course, before addint the datagrid to the hosting form you need to 
     // set position, location and other useful properties. 
     // Why don't you create the DataGrid with the designer and use that instance instead? 
     this.Controls.Add(dataGridView1); 
    } 
} 

EDITを混乱していますテーブルの名前CLIENTS。中に存在する>すべてのフィールド -
The SELECT statementがので、すべてのクライアントのデータを取得するために使用する正しい構文は

string sql = "SELECT * FROM Clients"; 

*手段である

SELECT field_names_list FROM _tablename_ 

として(その基本的な形で)定義されていますテーブル

+0

Steveさん、ありがとうございました。エラーadaper.Fill(ds)を持っています。 Microsoft Accessデータベースエンジンは、入力テーブルまたはクエリ 'テーブル'を細かくすることはできません。存在し、その名前のスペルが正しいことを確認してください。 – user2386687

+0

エラーは私には明らかです。 Tables.accdbに 'Tables'というテーブルがありますか?または、データテーブルのファイル名を混乱させていますか? – Steve

+0

テーブルが正しいですが、私は、テーブルから選択したクライアントのファイルからクライアントテーブルを接続しようとしたときに、何か間違っていると思っています。私が説明しようとしても、私はよく分かりません – user2386687

関連する問題