-1
Я пытаюсь выполнить простой выбор, но он не работает должным образом, я использовал тот же метод с другой таблицей и отлично работал, единственное отличие заключается в том, что в другом методе вместо этого был только один параметр из 3.C# MySql-запрос не возвращает значение
Метод:
public List<Quilometragem> SelectKM(string placa, string startDate, string endDate, string query)
{
MySqlDataReader rdr = null;
List<Quilometragem> result = new List<Quilometragem>();
Connect();
try
{
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = m_conn;
cmd.CommandText = query;
cmd.Parameters.AddWithValue("@placa", placa);
cmd.Parameters.AddWithValue("@startdate", startDate);
cmd.Parameters.AddWithValue("@enddate", endDate);
cmd.Prepare();
rdr = cmd.ExecuteReader();
while (rdr.Read())//Enquanto existir dados no select
{
Quilometragem cc = new Quilometragem();
cc.id = rdr["id"] == null ? 0 : Int32.Parse(rdr["id"].ToString());
cc.placa = rdr["Placa"] == null ? "" : rdr["Placa"].ToString();
cc.kmtrab = rdr["kmtrab"] == null ? 0 : Double.Parse(rdr["kmtrab"].ToString());
cc.kmpos = rdr["kmpos"] == null ? 0 : Double.Parse(rdr["kmpos"].ToString());
cc.date = rdr["date"] == null ? DateTime.MinValue : DateTime.Parse(rdr["date"].ToString());
result.Add(cc);
}
rdr.Close();
Close();
return result;
}
catch (Exception e)
{
log.Error(e);
}
finally
{
rdr.Close();
Close();
}
return null;
}
Запрос:
public static string SELECT_KM = "SELECT placa, kmtrab, kmpos " +
"FROM serede_quilometragem " +
"WHERE placa='@placa' AND CAST(DATE AS DATE) BETWEEN '@startdate' AND '@enddate' " +
"GROUP BY placa; ";
Это работает на MySQL Workbench
'WHERE placa = '@ placa'' не делает того, чего вы ожидаете. Аналогично другим параметрам, также в кавычках. Смотри внимательно. В будущем, пожалуйста, сообщите нам, что именно * происходит * и что вы ожидали, а не просто сказать, что что-то не работает. –
Вы не должны указывать свои параметры. Тогда они будут восприниматься как литералы. Используйте '@ startDate' вместо' '@ startDate'' и т. Д. –