2013-02-14 87 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; 
     }