2009-08-26 260 views
0

我有一个数据库,其中布尔值被存储为位(1为true,0为false)。将它们转换成DataRow中的.Net布尔值的最佳方式是什么? Convert.ToBoolean似乎不起作用。将1或0转换为布尔值的好方法是什么?

+0

为什么Convert.ToBoolean不工作?它为我工作了多年。 – 2009-08-26 11:51:17

+0

总是返回false。发现如果我.ToString的行值,但它工作正常。 – Simon 2009-08-26 13:37:53

回答

4

如果数据库中的数据类型为bit,那么根本不需要进行任何转换。数据库驱动程序会自动将值读取为布尔值,您只需将值解开即可:

bool value = (bool)row["field"]; 
+0

这是最明智的解决方案。 – Noldorin 2009-08-26 11:06:27

3
bool flag = (row[0]["Flag"] != DBNull.Value) ? (bool)row[0]["Flag"] : false; 
+0

如果分贝值是可空的,那么你不应该使用:bool? flag =(row [0] [“Flag”]!= DBNull.Value)? (bool)row [0] [“Flag”]:null;代替? – JohannesH 2009-08-26 11:00:21

+0

你的代码不会工作JohannesH,你会得到编译错误 – 2009-08-26 11:09:05

+0

@JohannesH:这是一个选项。取决于在应用程序中如何处理空值。 – 2009-08-26 11:09:51

1
bool flag = (row[0]["Flag"] != DBNull.Value) ? Convert.ToBoolean(row[0]["Flag"]) : false 

应该工作。然而,你可能想要考虑如何处理NULL值的情况,因为它被认为设置为false,你可能或不希望成为这种情况。

相关问题