2015-11-10 2 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

Try давая '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, это означает, что это строка с числовыми значениями, поэтому i сделал это 'object value = Convert.ToDouble (rowData.GetString (rowData.GetOrdinal (" AverageOdo "))). ToString(); cell1.Text = value.ToString(); 'Те же результаты –

ответ

0

попробовать это один

cell1.Text=rowData["AVG(odometer_reading)"].ToString(); 
Смежные вопросы