Почему адаптер. Заполнение внезапно перестало работать, чтобы заполнить мою таблицу данных в C#? - PullRequest
0 голосов
/ 16 января 2020

У меня есть приложение, которое запрашивает базу данных и возвращает результаты в виде данных. Прошлой ночью я смог использовать приложение без каких-либо проблем. Сегодня утром приложение внезапно перестало работать. Я не вносил никаких изменений в приложение с момента его тестирования прошлой ночью. Я открыл Visual Studio и начал отлаживать приложение. Когда я отлаживаю приложение, оно запускается в следующем коде:

public static DataTable GetDataTable(string query, string Connection = "SqlConnection")
{
    SqlConnection connSql = CreateConnection(Connection);
    SqlDataAdapter adapter = new SqlDataAdapter();
    adapter.SelectCommand = new SqlCommand(query, connSql);
    DataTable myDataTable = new DataTable();
    connSql.Open();
    try
    {
        adapter.Fill(myDataTable);
    }
    finally
    {
        connSql.Close();
    }
    return myDataTable;
}

В частности, adapter.Fill просто не заполнит myDataTable. Заметим, что я не получаю никаких ошибок, просто возвращается пустая таблица данных.

Устранение неисправностей Я сделал:

  1. Я проверил используемое соединение, и у меня не было проблем с регистрацией в SQL Сервер с предоставленными именем пользователя и паролем.
  2. Я скопировал и вставил значение из «запроса» в SQL Сервер и запустил запрос без каких-либо проблем.
  3. Я удалил свои временные файлы inte rnet и очистил кэш.
  4. Я попытался просмотреть приложение через другой компьютер.

Учитывая, что это работало вчера и сейчас не сегодня (без внесения каких-либо изменений), что могло вызвать эту проблему? Я работаю в доменной среде Windows. Я не уверен, какие дополнительные способы устранения неполадок я могу сделать!

Ответы [ 2 ]

0 голосов
/ 16 января 2020

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

    Datatable dt = new Datatable();
using (SqlConnection connection = 
            new SqlConnection(connectionString))
        {
            SqlDataAdapter adapter = new SqlDataAdapter();
            adapter.SelectCommand = new SqlCommand(
                queryString, connection);
            adapter.Fill(dt);
            return dt;
        }
    }

Ссылка - https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqldataadapter?view=netframework-4.8

0 голосов
/ 16 января 2020

Это очень распространенный код для использования SqlClient, за исключением метода CreateConnection.

Измените его на: new SqlConnection()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...