После запуска DataTable.load (SqlDataReader), DataTable кажется пустым, но DataReader содержит результаты (можно увидеть во время отладки).DataTable пуст после .load (SqlDataReader)
Может ли кто-нибудь помочь мне с этим, пожалуйста? Я не могу найти решение этой проблемы, и не могу найти ошибку в моем алгоритме. Я нашел некоторые решения для использования DataAdapter & Fill(), но мне просто интересно об этой проблеме ». Мой код:
DataTable DeviceProperties = new DataTable();
try
{
string query = "SELECT PropertyID, PropertyName from DeviceProperties WHERE DeviceID = @DeviceID;";
using (SqlCommand cmdSelectDeviceProperties = new SqlCommand(query, connectionDBTest))
{
cmdSelectDeviceProperties.Parameters.Add("@DeviceID", SqlDbType.BigInt).Value = deviceID;
using (SqlDataReader rdrSelectDeviceProperties = cmdSelectDeviceProperties.ExecuteReader())
{
if (rdrSelectDeviceProperties.HasRows)
DeviceProperties.Load(rdrSelectDeviceProperties);
else
Console.WriteLine("No Device Properties found..");
}
}
}
catch (Exception ex)
{
Console.WriteLine("Error getDeviceProperties: " + ex);
}
return DeviceProperties;
FYI: rdrSelectDeviceProperties.HasRows проходит каждый раз, так что читатель, конечно, содержит некоторое значение .. Правильные результаты могут быть найдены в rdrSelectDeviceProperties, во время отладки .. Но DeviceProperties данных остается таблица пустой.
ТОЧНАЯ ПРОБЛЕМА: таблица данных казалась пустой при отладке, потому что наведите указатель мыши: '{}'. Остальная часть кода, в зависимости от таблицы данных, ответила, поскольку таблица данных была пуста. РЕШЕНИЕ: Когда вы нажимаете увеличительное стекло и получаете представление данных в таблице данных. Моя ошибка была в остальной части кода (сравнение данных в таблице данных со строкой, без использования .ToString() ').
Учитесь на своих ошибках ..
Вы пробовали 'с помощью (вар daSelectDeviceProperties = новый SqlDataAdapter (запрос, connectionDBTest)) daSelectDeviceProperties.Fill (DeviceProperties); вместо этого? ' –
Спасибо, что ответили, но можете ли вы подробнее рассказать о том, где положить вышеуказанный код? И на второй ноте я был любопытно, почему DataTable DeviceProperties был пуст, даже после того, как я использовал загрузку на SqlReader, который содержит результаты. – Atoq