2015-11-10 38 views
1

我在我的網頁此代碼:讀取MySql數據庫的平均值。 C#ASP.NET

protected void Page_Load(object sender, EventArgs e) 
{ 
    conn.Open(); 
    string selectQuery = @"SELECT AVG(odometer_reading),truck_id FROM 
       inspection WHERE date BETWEEN '2015-12-01' AND '2016-06-01' 
       GROUP BY truck_id"; 
    MySqlCommand cmd = new MySqlCommand(selectQuery, conn); 
    MySqlDataReader reader = cmd.ExecuteReader(); 
    foreach (DbDataRecord rowData in reader) 
    { 
     populateTable(rowData); 
    }    
} 
private void populateTable (DbDataRecord rowData) 
{ 
    TableRow tr = new TableRow(); 
    TableCell cell1 = new TableCell(); 
    cell1.Text = rowData.GetString(rowData.GetOrdinal("AVG(odometer_reading)")).ToString(); 
    tr.Cells.Add(cell1);// Error 
    TableCell cell2 = new TableCell(); 
    cell2.Text = rowData.GetString(rowData.GetOrdinal("truck_id")).ToString(); 
    tr.Cells.Add(cell2); 
    tbl_TruckEfficiency.Rows.Add(tr); 
} 

我收到的Unable to cast object of type 'System.Double' to type 'System.String'.的錯誤可能是。這是什麼原因。

或者

是否有其他方式來獲得AVG(odometer_reading)得到它cell1.text考慮其數據類型,以避免錯誤。謝謝!

+1

先給'AVG(odometer_reading)'的別名例如'AVG(odometer_reading)作爲AverageRead'並使用此別名獲取數據 – Prabhat

+1

rowData.GetOrdinal將獲取列位置而不是值。嘗試在實現別名後使用GetDecimal或GetDouble,如[suprabhat]所示(http://stackoverflow.com/users/3513848/suprabhat-biswal) –

+0

我的'odometer_reading'具有一個varchar數據類型,意味着它是一個帶有數字值的字符串,所以我做了這個'object value = Convert.ToDouble(rowData.GetString(rowData.GetOrdinal(「AverageOdo」)))。ToString(); cell1.Text = value.ToString();'相同的結果 –

回答

0

試試這個

cell1.Text=rowData["AVG(odometer_reading)"].ToString();