繁体   English   中英

c# 在 DataGridView 中显示访问数据库

[英]c# display Access Database in DataGridView

首先,这是我的代码:

private void Form5_Load(object sender, EventArgs e)
{
    string strProvider = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = c:\Users\name\Documents\myprogramms\example.accdb";
    string strSql = "Select * from score";
    OleDbConnection con = new OleDbConnection(strProvider);
    OleDbCommand cmd = new OleDbCommand(strSql, con);
    con.Open();
    cmd.CommandType = CommandType.Text;
    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    DataTable scores = new DataTable();
    da.Fill(scores);
    data_example.DataSource = scores;
}

我的目标是显示 MS Access 数据库中的数据。 我的代码没有错误消息,但每次我尝试打开数据网格视图时,它都是空的。

你的代码片段看起来不错。 我看不到任何明显的问题。

尝试在方法的末尾放置断点并检查数据表是否包含行和行是否包含 ItemArray 中的任何值。

确保您的data_example DataGridView 控件设置为AutoGenerateColumns = true (默认)并检查您没有为您的data_example DataGridView 控件定义其他数据源。 这段代码对我有用。

private void Form1_Load(object sender, EventArgs e)
{
    data_example.AutoGenerateColumns = true;

    string strProvider = @"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = c:\aaa\CinemaBooking.accdb";
    string strSql = "Select * from Booking";

    using (OleDbConnection con = new OleDbConnection(strProvider))
    {
        using (OleDbCommand cmd = new OleDbCommand(strSql, con))
        {
            using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))
            {
                con.Open();
                var scores = new DataTable();
                da.Fill(scores);
                data_example.DataSource = scores.DefaultView;
                con.Close();
            }
        }
    }
}

也许您可以尝试使用适配器填充数据集,然后使用命名表作为数据源:

var dtSet = new DataSet();  
da.Fill(dtSet, "Booking");  
data_example.DataSource = dtSet.Tables["Booking"].DefaultView;  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM