DbType与SqlDbType.Bit等效吗?

9

有人知道 DbType 相当于 SqlDbType.Bit 吗?

我正在尝试进行转换。

param[0] = new SqlParameter("@Status", SqlDbType.Bit);
param[0].Value = Status;

为了

db.AddInParameter(dbCommand, "@Status", <DbType dbType>, Status);

但我不知道该使用哪种DbType来表示单个Bit。有什么想法吗?

2
一个布尔值吗?虽然 DbType 是 Bit,.NET 类型是 bool,但是你说的“DbType 等同于 SqlDbType.Bit”是什么意思? - Freeman
我同意使用布尔类型,因为它存储的值只有0或1。 - Derek
1
@Freeman,布尔类型不是只能取true或false吗?而位(bit)则可以取1或0。 - Aditi
1
那么,你的问题是什么? - Freeman
4个回答

12

数据库类型bit在服务器端表示为布尔值,因此相应的DbType值为DbType.Boolean


10

DbType.Boolean:

一个简单的类型,表示 true 或 false 值。

SqlDbType.Bit:

Boolean。一个无符号数值,可以是 0、1 或 null。

虽然它们的描述不完全匹配,但由于 Bit 被描述为一个 Boolean,因此它是最合适的匹配。


那么像这样的东西会起作用吗 - cmd.Parameters.Add("@isActive", SqlDbType.Bit).Value = False - MaylorTaylor
这是否最合适?C# 确实知道 null,就像 SQL 中的可空 BIT 字段一样。例如,SQL Server 只接受 0/1/NULL 而不是 true/false - dakab
@dakab - 这里有一些问题我在我的回答中没有包括,例如 SQL Server 实际上没有布尔数据类型(文档中将 bit 描述为数字类型),并且如果 SQL Server 要实现正确(SQL 标准)的布尔数据类型,则由于其使用三值逻辑,该类型应支持 truefalseunknown,以及(对于每种类型的标准)通过 null 表示缺失值。 - Damien_The_Unbeliever

3

2

这并没有考虑到 OP 正在寻找的 SQLDbType 并不包括布尔类型。 - MaylorTaylor

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