Выбор с помощью Dapper - PullRequest
       12

Выбор с помощью Dapper

0 голосов
/ 30 августа 2018

У меня есть проблема с моим запросом, использующим dapper, если кто-то думает, что он может мне помочь и говорит, где я делаю неправильно, в настоящее время показывает мне ошибку в день, когда я ставлю точку брейка, как правильно ее исправить ? спасибо всем за помощь

это мой текущий код

public string GetBezeichnung(int LP, DateTime date)
{
    using (IDbConnection connection = new System.Data.SqlClient.SqlConnection())
    {
        connection.ConnectionString = _ConnectionString;
        var output = connection.Query<string>("SELECT ZER_Bezeichnung FROM Z_ERFASSUNG WHERE ZER_LPE = " + LP + " AND ZER_Datum = " + date).FirstOrDefault();
        return output;
    }
}

и это результат, с которым я получаю ошибку

image description here

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Я согласен с @Parrish Husband, но Вторым параметром должно быть «Дата = дата».

В вашем примере нет даты вокруг даты, поэтому AQL считает, что это куча вещей.

Изменение на

var output = connection.Query<string>("SELECT ZER_Bezeichnung FROM Z_ERFASSUNG WHERE ZER_LPE = " + LP + " AND ZER_Datum = '" + date + "'").FirstOrDefault();

заработает.

0 голосов
/ 30 августа 2018

Используйте следующую строку кода, чтобы она соответствовала точной дате. если время для даты отличается, то эти записи не будут выбраны.

var output = connection.Query<string>("SELECT ZER_Bezeichnung FROM Z_ERFASSUNG WHERE ZER_LPE = " + LP + " AND Cast( ZER_Datum as DATE) = Cast('" + date + "' as DATE)").FirstOrDefault();
0 голосов
/ 30 августа 2018

Попробуйте параметризовать запрос.

public string GetBezeichnung(int LP, DateTime date)
{
    using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(_ConnectionString))
    {
        connection.Open();
        string sql = @"
SELECT ZER_Bezeichnung 
FROM Z_ERFASSUNG 
WHERE ZER_LPE = @LP
  AND ZER_Datum = @date"
        var output = connection.Query<string>(sql, new { LP = LP, date = date }).FirstOrDefault();
        return output;
    }
}
...