在C#中,使用SqlDataReader,有沒有辦法從數據庫讀取布爾值?從數據庫讀取布爾值?
while (reader.Read())
{
destPath = reader["destination_path"].ToString();
destFile = reader["destination_file"].ToString();
createDir = reader["create_directory"].ToString();
deleteExisting = Convert.ToBoolean(reader["delete_existing"]);
skipIFolderDate = reader["skipifolderdate"].ToString();
useTempFile = reader["useTempFile"].ToString();
password = reader["password"].ToString();
}
在上面的代碼中,delete_existing在數據庫中始終爲1或0。我在MSDN上讀到Convert.ToBoolean()不接受1或0作爲有效輸入。它只接受真或假。有沒有另一種方法將DB值轉換爲bool?或者我需要在SqlDataReader之外執行此操作嗎?
另外,我無法更改DB值,因此請不要回答說:「將DB值從1和0改爲true和false」。
謝謝!
@Laurent嗯...我寧願選擇第三種選擇,因爲有人可以在桌子上添加一列,然後很明顯,應用程序會崩潰。但是,你能解釋第二個選項到底發生了什麼嗎?我被「作爲布爾?錯誤的」弄糊塗了。「特別是3?的... – 2011-05-09 19:56:57
第三種解決方案:我試圖將讀者[「delete_existing」]投給一個可爲空的bool(bool?)。這樣,如果字段包含DBNull.Value,則強制轉換將失敗並返回null。因爲我寧願變得錯誤,我正在使用?它將null轉換爲任何值(即:null ?? 45 = 45)。我使用了很多。 – Larry 2011-05-09 20:02:51
第二種解決方案:我正在對bool進行直接投射。如果該值不是布爾類型,這個將會拋出異常。例如,如果它是DBNull.Value。這就是爲什麼它應該與非空位數據庫字段一起使用。只需選擇一個適合您的需求^^ delete_existing btw的數據庫類型是什麼? – Larry 2011-05-09 20:08:13