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
пренебрегая его тип данных, чтобы избежать ошибки. Благодаря!
Try давая 'AVG (odometer_reading)' имя псевдонима, например, 'AVG (odometer_reading) как AverageRead' и использовать это имя псевдонима для получения данных – Prabhat
rowData.GetOrdinal будет выбирать позицию столбца, а не значение. Попробуйте использовать GetDecimal или GetDouble после реализации псевдонима, как указано в [suprabhat] (http://stackoverflow.com/users/3513848/suprabhat-biswal) –
У моего 'odometer_reading' есть тип данных varchar, это означает, что это строка с числовыми значениями, поэтому i сделал это 'object value = Convert.ToDouble (rowData.GetString (rowData.GetOrdinal (" AverageOdo "))). ToString(); cell1.Text = value.ToString(); 'Те же результаты –