Что-то перестало работать в моем приложении. Я проверил мою хранимую процедуру, и она возвращает 3 строки (слишком большой, чтобы репостить здесь) На выходе в Visual Studio он говорит потом:
(1 row(s) affected)
(3 row(s) returned)
@RETURN_VALUE = 0
Finished running [dbo].[GetCaseDocumentFile].
Почему я не могу поместить его в таблицу данных с именем dtResult? Команда sqlDataAdapter.Fill (dtResult) должна это сделать. Вместо этого я получаю {}, когда смотрю на него в режиме отладки.
string connectionString = @"Data Source=34.56.55.251;Initial Catalog=DBXXX;User ID=xx;Password=XXXXXXXX;";
string queryString = "GetCaseDocumentFile";
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Parameters.AddWithValue("@key", 200012);
connection.Open();
// Works! Three lines are returned.
SqlDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}",
reader[0], reader[1]));
}
}
finally
{
reader.Close();
}
// Does not work! dtResult remains empty. {}
DataTable dtResult = new DataTable();
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(command);
sqlDataAdapter.Fill(dtResult);
DataTable result = dtResult;
}
Обновление:
Nevermind. Это на самом деле работает. Это мой тестовый код и то, что я думал, что мой реальный код делает. Но я предполагаю, что что-то упустил из реального кода.