2013-02-14 79 views
1

我有一个datagrid视图,它的数据源是MS Access(它有一个数据类型,货币,日期/时间和数字),它显示数据库中的数据,但不显示其他数据类型,只有单词或任何字符串,这里是我的代码添加行datagridview不显示数字从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); 
      } 

你能帮我吗?感谢

+1

什么是从Access表中的字段的数据类型?您的测试查找INT32忽略所有其他可能的数字数据类型的字段可以存储为。 – 2013-02-14 04:00:21

+1

您可以尝试遍历列并向控制台写入每个字段的数据类型,以此来确定每个字段的数据类型。 – 2013-02-14 04:02:04

+1

它读取的数字,但不是数据库中的货币和日期时间,我想我应该改变数据类型 – Pyromancer 2013-02-14 04:50:31

回答

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; 
     }