2015-07-30 5 views
0

У меня есть этот запрос, и я получаю результаты, когда я исполняю его на Sql студии:Запрос работает на SQL Studio, но не работает на C#

select TeamName, count(*) 
    from NetHoz_Decision 
    inner join NetHoz_Case on NetHoz_Decision.CaseDisplayIdentifier = NetHoz_Case.CaseDisplayIdentifier 
    inner join maintik on MainTik.Counter = NetHoz_Case.TikCounter 
    inner join Teams on MainTik.TeamCounter = Teams.Counter 
    where NetHoz_Decision.DecisionStatusChangeDate between '2015-07-23' and '2015-07-28' 
    group by TeamName 

Но когда я исполняю его на C# SqlCommand Я не Не получится. DataSet пуст, и я не получаю никаких ошибок. Я думал, что проблема может быть на свидании. Могу ли я преобразовать его правильно?

String date1 = String.Format("{0:yyyy-MM-dd}", dateTimePicker1.Value); 
String date2 = String.Format("{0:yyyy-MM-dd}", dateTimePicker2.Value.AddDays(1)); 
+5

Там не хватает контекста здесь. Обычно вы должны использовать параметры типа-типа и, следовательно, не нужно вообще конвертировать в строку. Работает ли он (возвращать результаты) без предложения 'where'? –

+1

Вы посмотрели на свойство CommandText объекта команды и скопировали/вставляли его в SQL Studio? Кроме того, действительно ли вы используете переменные даты в самом SQL? – oscilatingcretin

+0

@oscilatingcretin Я не думал о возможности копирования его обратно в sql. Я удалил предложение where и скопировал его в sql, и он работает. И да, я реально использую переменные даты в самом SQL. –

ответ

1

Использование SqlCommand и type-safe parameters

const string query = " 
select TeamName, count(*) 
from NetHoz_Decision 
inner join NetHoz_Case on NetHoz_Decision.CaseDisplayIdentifier = NetHoz_Case.CaseDisplayIdentifier 
inner join maintik on MainTik.Counter = NetHoz_Case.TikCounter 
inner join Teams on MainTik.TeamCounter = Teams.Counter 
where NetHoz_Decision.DecisionStatusChangeDate between @from and @to 
group by TeamName 
"; 

SqlCommand command = new SqlCommand(query); 
command.Parameters.AddWithValue("@from", dateTimePicker1.Value); 
command.Parameters.AddWithValue("@to", dateTimePicker2.Value.AddDays(1)); 
Смежные вопросы