[英]Read boolean values from DB?
在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值轉換為布爾值的替代方法? 還是我需要在SqlDataReader之外執行此操作?
另外,我無法更改DB值,因此請不要回答“將DB值從1和0更改為true和false”。
謝謝!
如果delete_existing
的類型是sqlserver的“位”類型,則可以執行以下操作:
var i = reader.GetOrdinal("delete_existing"); // Get the field position
deleteExisting = reader.GetBoolean(i);
或(但如果delete_existing
可以為DBNull
,它將崩潰)
deleteExisting = (bool)reader["delete_existing"];
或更佳的是,下面的這個是DBNull
證明的,如果列是DBNull
,則返回false
deleteExisting = reader["delete_existing"] as bool? ?? false;
否則,如果數據庫類型為int
:
deleteExisting = (reader["delete_existing"] as int? == 1) ? true : false;
還是如果是varchar
deleteExisting = (reader["delete_existing"] as string == "1") ? true : false;
投放工作:myVar =(bool)dataReader [“ myColumn”];
如果要在SELECT中使用CASE並希望使用GetBoolean,請在讀取之前使用CAST將列更改為bit。
例如:
SELECT CAST((CASE WHEN [Condition] THEN 1 ELSE 0 END) as bit) FROM Table_Name
那么你可以使用
reader.GetBoolean(0)
這個怎么樣?
deleteExisting = (reader["delete_existing"] as int?) == 1;
布爾值可能是將某物轉換為的簡單類型。 這是“ Y”,“ N”版本:
deleteExisting = string.Equals(reader["delete_existing"] as string, "Y", StringComparision.OrdinalIgnoreCase);
deleteExisting = reader.GetBoolean(reader["delete_existing"]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.