我運行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數據表保持空...
確切問題:調試時數據表看起來是空的,因爲懸停在上面顯示:'{}'。 其餘代碼根據數據表作出響應,因爲數據表爲空。 SOLUTION:當你按下放大鏡,你得到的數據表中的數據表示。 我的錯誤是在代碼的其餘部分(比較數據表中的數據與字符串,而不使用'.ToString()')。
從我的錯誤中學習..
你試過'使用(VAR daSelectDeviceProperties =新SqlDataAdapter的(查詢,connectionDBTest ))daSelectDeviceProperties.Fill(DeviceProperties);'而不是? ' –
感謝您的回答,但是您能否詳細說明放置上述代碼的位置? 並在第二個注意,我有點想知道爲什麼DataTable DeviceProperties是空的,即使我使用包含結果的SqlReader的負載.. – Atoq