c# - 使用 C# 从 Access 数据库读取条目到 DataGridView

标签 c# ms-access

出于某种原因,当我尝试使用此代码从 Access 数据库中读取数字时,我的数据网格中只有空白条目。我可以很好地阅读字符串。有人知道为什么会这样吗?是的,Access 中未读条目的实际数据类型是数字。

        string strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Employees.mdb";
        string strSql = "SELECT * FROM tbl_employees";
        OleDbConnection con = new OleDbConnection(strProvider);
        OleDbCommand cmd = new OleDbCommand(strSql, con);
        con.Open();
        cmd.CommandType = CommandType.Text;
        OleDbDataReader dr = cmd.ExecuteReader();

        int columnCount = dr.FieldCount;

        for (int i = 0; i < columnCount; i++)
        {
            dgv.Columns.Add(dr.GetName(i).ToString(), dr.GetName(i).ToString());
        }

        string[] rowData = new string[columnCount];
        while (dr.Read())
        {
            for (int k = 0; k < columnCount; k++)
            {
                if (dr.GetFieldType(k).ToString() =="System.Int32")
                {
                    rowData[k] = dr.GetInt32(k).ToString();
                }

                if (dr.GetFieldType(k).ToString() == "System.String")
                {
                    rowData[k] = dr.GetString(k);
                }
            }

            dgv.Rows.Add(rowData);
        }

最佳答案

我建议您尝试在调试器中单步执行代码,以便了解发生了什么。我的第一个猜测是您的数字字段未作为 Int32 返回,也许它们是 float 或小数。

如果由于某种原因你不能通过它,尝试这样的事情:

            if (dr.GetFieldType(k).ToString() =="System.Int32")
            {
                rowData[k] = dr.GetInt32(k).ToString();
            }
            else if (dr.GetFieldType(k).ToString() == "System.String")
            {
                rowData[k] = dr.GetString(k);
            }
            else
            {
                rowData[k] = dr.GetFieldType(k).ToString();
            }

这样您就可以看到未显示的字段中的值类型。

关于c# - 使用 C# 从 Access 数据库读取条目到 DataGridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846241/

相关文章:

c# - ASP.Net MVC 3 登录和 Windows 身份验证

c# - 使用 .First() 和 .Count() 破坏了 IEnumerable?

MySql Access VB

database - 使用表格和报告功能替代 MS Access

c# - 如何使用 EntityFramework 核心来单一化实体

c# - 将 RestSharp 用于以下代码的内置替代方法是什么?

c# - Xamarin Android 后台服务在应用程序关闭时崩溃

ms-access - Access 中表单的更改有时会成为永久性更改

SQL 更新替换字符串中的部分文本

sql - 检查 Access 表是否存在