Я новичок в использовании SqlDataAdpter
, и я пытаюсь выполнить хранимую процедуру. Хранимая процедура выполняется успешно, но строки не возвращаются. Я использовал SQL Server Profiler для отслеживания вызова, и он работает успешно (я могу копировать и выполнять запрос из профилировщика без его изменения и получения результатов).Сохраненная процедура не возвращает строки с SqlDataAdapter
У меня есть следующие:
public ActionResult Index()
{
SqlConnection conn = null;
DataSet results = null;
try
{
string connectionString = // ... my connection
conn = new SqlConnection(connectionString);
string query = @"usp_mySP";
conn.Open();
SqlDataAdapter sqlAdpt = new SqlDataAdapter(query, conn);
sqlAdpt.SelectCommand.CommandType = CommandType.StoredProcedure;
var dataDate = new SqlParameter { ParameterName = "@DataDate", Value = DateTime.Now };
var idList = new SqlParameter { ParameterName = "@IDList", Value = "1231,2324,0833" };
sqlAdpt.SelectCommand.Parameters.Add(dataDate);
sqlAdpt.SelectCommand.Parameters.Add(idList);
results = new DataSet();
sqlAdpt.Fill(results);
sqlAdpt.Dispose();
}
catch (SqlException e)
{
throw new Exception("Exception:" + e.Message);
}
finally
{
if (conn != null)
conn.Close();
}
return View(results);
}
Когда я проверить DataSet
через отладчик, он всегда возвращает 0 строк.
Помогите с тем, что я делаю неправильно?
Примечание: Я также попытался (но НЕ нравится) выполнение как команды SQL:
EXEC usp_mySP @DataDate, @IDList
и это не сработало, как я получил int
в varchar
ошибки преобразования.
Возможно, убедитесь, что у вас есть 'set nocount on' в начале вашего SP. – user212514
Совет для отладки: используйте профилировщик sql-сервера и проверьте, что отправлено на экземпляр SQL-сервера. Также посмотрите, что такое возврат (должны иметь строки или другое свойство). Вы также можете захватить точную команду sql и повторно выполнить в студию управления, чтобы узнать, каким был результат. – Igor
Вы использовали 'SQL Profiler' для захвата того, что SQL собирается на сервер? Вы отлаживали свой SP? Может быть полезно увидеть вашу логику внутри вашего SP. Иногда формат даты, отправленный .Net, может не совпадать с форматом даты, ожидаемым сервером БД! – techspider