2013-06-10 19 views
7

İçinde 7 tablo bulunan erişim veritabanı dosyası var, ancak tüm tabloları nasıl bağlayacağımı ve göstereceğimi bilmiyorum.Erişim veritabanı c'ye nasıl bağlanır? #

bu benim kod ama şey

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

Ve bu kod atmakta olan hata nedir? ** Lütfen bu bilgiyi içeren soruları * düzenleyin. ** –

+0

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/6fde18c2-3e82-4a75-acf5-9aa5dd2165c2/ adresini gördünüz mü? ? –

+0

Bunun yerine Provider = Microsoft.Jet.OLEDB.4.0' kullanın? –

cevap

13

bu kodu deneyin göstermez,

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

Yalnızca Access 2007'den daha eski Access veritabanları için çalışır – Fandango68

2

Sen anında bir DataGridView inşa ediyoruz ve DataSource ayarlamak onun için. Bu iyi, ama sonra DataGridView hosting formunun Kontroller koleksiyonuna ekliyor musunuz? Bu arada

this.Controls.Add(dataGridView1); 

kod dosya adı (TABLES.ACCDB) arasında biraz karışıklık olduğu açıktır altında biraz yorumlarla sonra

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

DÜZENLEMEYİ karıştı olduğunu tablonun adı MÜŞTERİLER.
The SELECT statement çok doğru sözdizimi tüm istemcilerin veri almak için kullanılacak

SELECT field_names_list FROM _tablename_ 

olarak (temel şeklinde) gibi tanımlanmıştır * anlamına

string sql = "SELECT * FROM Clients"; 

olduğu bir - mevcut> tüm alanlar tablo

+0

Teşekkür ederim Steve, bir hata yaşıyorum adaper.Fill (ds); Microsoft Access Veritabanı altyapısı, imput tablosunu veya 'Tablolar' sorgusunu ayarlayamaz. Emin olduğunuzdan ve adının doğru yazıldığından emin olun. – user2386687

+0

Hata bana açık görünüyor. Tables.accdb'nizde 'Tables' adlı bir tablonuz var mı? Yoksa dosya için dosyanın adını karıştırıyor musunuz? – Steve

+0

Tablolar doğru ama düşünürüm, Tablolar'dan İstemciler'de dosyadan istemci tablosunu bağlamaya çalıştığımda, yanlış yaptığım bir şey var, bu şeyleri bilmiyorum. Açıklamaya çalıştığımda bile çok iyi bilmiyorum – user2386687

İlgili konular