2013-06-10 4 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

이 코드를 시도 표시되지 않습니다,

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를 구축하고 데이터 소스를 설정 그것을 위해. 좋습니다,하지만 DataGridView를 호스팅 양식의 Controls 컬렉션에 추가합니까? 그런데

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

편집 혼란이다 테이블의 이름 CLIENTS.
The SELECT statement 정도로 정확한 구문은 모든 고객의 데이터를 검색하기 위해 사용

SELECT field_names_list FROM _tablename_ 

같은 (기본적인 형태로) 정의 * 수단

string sql = "SELECT * FROM Clients"; 

이다 -에 존재> 모든 필드 테이블

+0

감사합니다. 스티브에게 오류가 있습니다. 채우기 (ds); Microsoft Access 데이터베이스 엔진은 입력 테이블 또는 쿼리 '테이블'을 정밀하게 처리 할 수 ​​없으며 해당 테이블 이름이 올바른지 철저하게 검사해야합니다. – user2386687

+0

오류가 분명해 보입니다. Tables.accdb에'Tables'라는 이름의 테이블이 있습니까? 또는 데이터 테이블의 파일 이름을 혼동하고 있습니까? – Steve

+0

테이블이 맞지만 테이블에서 선택한 클라이언트의 클라이언트 테이블을 파일에서 연결하려고 할 때 내가 잘못하고 있다고 생각합니다. 오 이런 것들을 모릅니다. 내가 잘 모르겠다 고 설명하려고 할 때도 – user2386687

관련 문제