Моя хранимая процедура возвращает что-то, но sqlDataAdapter.Fill оставляет объект данных пустым - PullRequest
2 голосов
/ 01 апреля 2011

Что-то перестало работать в моем приложении. Я проверил мою хранимую процедуру, и она возвращает 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. Это на самом деле работает. Это мой тестовый код и то, что я думал, что мой реальный код делает. Но я предполагаю, что что-то упустил из реального кода.

1 Ответ

2 голосов
/ 04 апреля 2011

Вы не установили ставку в своей процедуре ?? Установить NoCount On;

...