2013-03-01 155 views
5

我在此處顯示訪問數據庫中datagridview中的數據時使用的代碼。我有不同的行,但只顯示數據庫中的最後一行數據。我不知道我的代碼中有什麼問題。如何在訪問數據庫中顯示datagridview中的數據

dataGridView1.Columns.Add("UserID", "UserID"); 
    dataGridView1.Columns.Add("FirstName", "FirstName"); 
    dataGridView1.Columns.Add("MI", "MI"); 
    dataGridView1.Columns.Add("LastName", "LastName"); 
    dataGridView1.Columns.Add("Birthdate", "Birthdate"); 
    dataGridView1.Columns.Add("Address", "Address"); 
    dataGridView1.Columns.Add("UserName", "UserName"); 
    dataGridView1.Columns.Add("UserPassword", "UserPassword"); 
    dataGridView1.Columns.Add("Rights", "Rights"); 


    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\SISC-STRONGHOLD\MIS!\wilbert.beltran\SEEDBucksDbase.accdb"); 
    conn.Open(); 
    OleDbCommand cmd = new OleDbCommand(); 
    cmd.Connection = conn; 
    cmd.CommandText = "SELECT * From TableAcct"; 
    OleDbDataReader reader = cmd.ExecuteReader(); 
    while (reader.Read()) 
    { 
     dataGridView1.Rows.Add(); 

     dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["UserID"].Value = reader[0].ToString(); 
     dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["FirstName"].Value = reader[1].ToString(); 
     dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["MI"].Value = reader[2].ToString(); 
     dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["LastName"].Value = reader[3].ToString(); 
     dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Birthdate"].Value = reader[4].ToString(); 
     dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Address"].Value = reader[5].ToString(); 
     dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["UserName"].Value = reader[7].ToString(); 
     dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["UserPassword"].Value = reader[8].ToString(); 
     dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells["Rights"].Value = reader[9].ToString(); 
    } 
    conn.Close(); 
} 
+0

@JohnSaunders - 我很抱歉,但在C#中我只是一個初學者。代碼工作,但它只顯示我的表中的最後一行數據,但它應該顯示錶中的所有行。 – bhert 2013-03-01 02:41:05

回答

6

可以使用OleDbDataAdapter直接綁定dataGridView1。確保datagridview中列的名稱與查詢返回的字段名稱匹配,以便它包含空白列併爲每個字段創建另一列。

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0; 
     Data Source=\\SISC-STRONGHOLD\MIS!\wilbert.beltran\SEEDBucksDbase.accdb"; 
string query = "SELECT * From TableAcct"; 
using(OleDbConnection conn = new OleDbConnection(connStr)) 
{ 
    using(OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn)) 
    { 
     DataSet ds = new DataSet(); 
     adapter.Fill(ds); 
     DataGridView1.DataSource= ds.Tables[0]; 
    } 
} 
+1

in line「adapter.Fill(ds [0]);」 錯誤表示「無法將[]的索引應用於'System.Data.Dataset'類型的表達式」。謝謝:) – bhert 2013-03-01 02:56:17

+0

哦,這是一個錯字,它應該只是'adapter.Fill(ds);'。 – 2013-03-01 02:57:44

+1

非常感謝。它完美的作品:)謝謝。這是一個簡短的代碼,它是完美的:)謝謝! – bhert 2013-03-01 02:59:55

0

請使用此代碼,以顯示你的數據對datagridview的在C#.NET

OleDBConnection con=new  OleDBConnection("Copy your database database path and paste it"); 
    con.open(); 
    Dataset ds=new Dataset(); 
     OleDBDataAdapter sdr=new  OleDBDataAdapter("select * from table_name",con); 
    sdr.Fill(ds); 
    datagridview1.Datasource=ds.tables[0]; 
    con.close(); 
0
public partial class WebForm1 : System.Web.UI.Page 
{ 
    public String name,type,rvw; 


    public void Page_Load(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Uz!\Documents\Data_Ware.mdf;Integrated Security=True;Connect Timeout=30"); 
     SqlDataAdapter sda = new SqlDataAdapter("Select * From CoffeeDB ", con); 
     DataTable dt = new DataTable(); 
     sda.Fill(dt); 

     GridView.DataSource = dt; 
    } 
} 
+0

你願意寫一些解釋給提供的代碼嗎?謝謝 – Anton 2016-03-13 09:43:20

相關問題