【问题标题】:datagridview not showing numbers from MS Accessdatagridview 不显示来自 MS Access 的数字
【发布时间】:2013-02-14 03:55:33
【问题描述】:

我有一个数据网格视图,它的数据源是 MS Access(具有数据类型、货币、日期/时间和数字),它显示数据库中的数据但不显示其他数据类型,仅显示单词或任何字符串,这是我添加行的代码

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);
                    }
                }
                dataGridView1.Rows.Add(rowData);
            }

你能帮我解决这个问题吗?谢谢

【问题讨论】:

  • Access 表中字段的数据类型是什么?您查找 INT32 的测试会忽略字段可以存储为的所有其他潜在数字数据类型。
  • 您可以尝试遍历列并将每个字段的数据类型写入控制台,以此来确定每个字段的数据类型。
  • 它读取数字而不是数据库中的货币和日期时间,我认为我应该更改数据类型
  • 如果可以的话,从 Access 中发布表结构到您的问题。我不会更改 Access 中的数据类型,但会在上面的代码中添加额外的逻辑来处理货币和日期时间。
  • 如果,我更改代码并改用数据绑定。

标签: c# winforms datagridview oledb


【解决方案1】:

我没有使用上面的代码,而是使用了这段代码,它可以工作

private void Form6_Load(object sender, EventArgs e)
        {
            loadData();
        }

private void loadData()
            {
                str = new OleDbConnectionStringBuilder();
                str.Provider = "Microsoft.ace.Oledb.12.0";
                str.DataSource = @"\\sisc-erelim\4_Printing\VTDB\DB\VirginiTEADB2.accdb";
                con = new OleDbConnection(str.ConnectionString);
                dataGridView1.DataSource = fillTable("Select* from Accountstbl");
                dataGridView1.Columns["Password"].Visible = false;
                dataGridView1.Columns["Picture"].Visible = false;
            }

        private DataTable fillTable(string sql)
        {
            DataTable datatable = new DataTable();
            using (OleDbDataAdapter da = new OleDbDataAdapter(sql, con))
            {
                da.Fill(datatable);
            }

            return datatable;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2019-12-16
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 2014-02-03
    相关资源
    最近更新 更多