SQL Server 2008中的布尔类型

5

在我的数据库中,我有一行UserActive。它应该是布尔类型的。SQL Server不支持布尔数据类型。与其相似或接近的是bit 0/1。如果我将此列设置为位类型,那么在我的C#代码中如何处理它?我应该在我的代码中使用布尔类型吗?

示例

if (ud.UserActive != true)
{
   lblUserActive.Text = "Disactivated";
}
else
{
   lblUserActive.Text = "Activated";
}

或者

if (ud.UserActive == 1)
{
   lblUserActive.Text = "Activated";
}
else
{
   lblUserActive.Text = "Disactivated";
}

感谢您的回复。

1
SQL Server 数据类型映射(ADO.NET):http://msdn.microsoft.com/zh-cn/library/cc716729.aspx - Mitch Wheat
http://msdn.microsoft.com/en-us/library/ms131092.aspx - Mitch Wheat
2
“SQL不支持bool数据” <-- 你使用的是哪种数据库?Microsoft SQL Server支持bool,它被称为“bit”。其他数据库我不清楚。 - Michael Stum
1
请编辑标题,更改为更具描述性的内容。 - Mauricio Scheffer
@Michael - bit虽然在SQL Server本身中不是布尔数据类型,但正如OP所指出的那样。你不能编写SELECT * FROM foo WHERE SomeBitColumn,而必须编写SELECT * FROM foo WHERE SomeBitColumn = 1 - Martin Smith
这正是我所想的! - NCFUSN
1个回答

1
第二个。C# 是非常强类型的。
lblUserActive.Text = ud.UserActive != 0 ? "Activated" : "Not Activated";

但无论如何,在 SQL 中类型必须是“bit”类型。对吗? - NCFUSN
您可以将其设置为任何数字类型。如果您有多个位数,则位数运行良好。TINYINT 也可用,如果您在表中仅有一种位类型列,则存储将是相同的。 - Christo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接