2011-05-13 152 views
7

可能重复:
Which MySQL Datatype to use for storing boolean values?什么是在MySQL中存储布尔值的数据类型?

我是一个.NET程序员,使用MySQL数据库在我生命中的第一次。

我想存储布尔值,MySQL有BIT,但此数据类型的.NET转换为UINT64

还有另一种数据类型TINYINT(1),其.NET相当于System.Boolean这将符合我的目的。

但我为什么会用TINYINT(1)(可存储123一样,22的值),而不是BIT将采取更多的空间比BIT也(我猜)?使用它可能是合法的,但我不认为它是符合逻辑的。

有人能帮助并澄清我的疑问吗?

+0

你是什么“的.NET转换”是什么意思?你如何将你的db值转换成.net类型?如果你手动转换,你不能使用:Convert.ToBoolean(reader [“columnName”])这应该将BIT值转换为布尔值没有问题。 – coalvilledave 2011-05-13 07:54:13

+0

如果您正在使用DataReader并执行上述转换,那么它工作正常。 但如果你起诉DataTable并尝试做转换,那么它不起作用。 – 2011-05-13 09:56:38

回答

6

MySQL有BOOL和BOOLEAN,但它们是TINYINT(1)的同义词。零值被认为是错误的。非零值被认为是真实的。我想有人在MySQL的想法,并决定TINYINT(1)是首选的方式去。我一直都是这样使用的。

有这个类似的问题,一些更多的信息:What is the difference between BIT and TINYINT in MySQL?

2

BIT不按照您认为的方式工作es,一般用于存储bitfieldsBIT(M)需要约(M+7)/8(整数算术)字节的存储。无论如何,使用BIT(1)需要一整个字节,与TINYINT相同,所以不用担心。

如果您有兴趣,各种类型的存储要求位于here

相关问题