【问题标题】:How to Display data in datagridview from access database如何在访问数据库中的datagridview中显示数据
【发布时间】:2013-03-01 02:31:47
【问题描述】:

我有下面的代码来显示来自 access 数据库的 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();
}

【问题讨论】:

  • @JohnSaunders - 很抱歉,我只是 C# 的初学者。代码有效,但它只显示我表中的最后一行数据,但它应该显示表中的所有行。

标签: c# .net datagridview ms-access-2007


【解决方案1】:

您可以使用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];
    }
}

【讨论】:

  • 在“adapter.Fill(ds[0]);”行错误提示“无法使用 [] 将索引应用于‘System.Data.Dataset’类型的表达式”。谢谢:)
  • 哦,打错了,应该只是adapter.Fill(ds);
  • 非常感谢。它完美地工作:) 谢谢。这是一个简短的代码,它是完美的 :) 谢谢!
  • 不客气。其实还没有完成。您必须添加异常才能正确处理错误:D
  • 是否可以只显示特定的行?例如。我有一个员工表,当我在文本框中输入“姓氏”时。它只会在datagridview中显示有关“姓氏”的相关信息:)谢谢,期待您的回答:)
【解决方案2】:
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;
    }
}

【讨论】:

  • 您愿意为提供的代码写一些解释。谢谢
【解决方案3】:

请使用此代码在 c#.net 中将数据显示到 datagridview

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

【讨论】:

    【解决方案4】:
    string con= "SERVER=localhost; user id=root; password=; database=dbname";
    
    MySqlConnection connect = new MySqlConnection(con);
    connect.Open();
    try
    {
    string sqlQuery = "SELECT * FROM DATA WHERE date(date) = date(now())";
    MySqlDataAdapter da = new MySqlDataAdapter(sqlQuery, connect);
    DataTable ds = new DataTable();
    da.Fill(ds);
    Datagrid.DataSource = ds;
    }
    catch(Exception ex)
    {
    Console.WriteLine(ex.ToString());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多