C# MySQL中存储布尔值的数据类型是什么?
可能重复:C# MySQL中存储布尔值的数据类型是什么?,c#,mysql,types,sqldatatypes,C#,Mysql,Types,Sqldatatypes,可能重复: 我是一名.NET程序员,有生以来第一次使用MySQL数据库 我想存储布尔值,MySQL有位,但是这个数据类型的.NET转换是UINT64 还有另一个数据类型TINYINT(1),它的.NET等价物是System.Boolean,这将满足我的需要 但是为什么我要使用TINYINT(1)(它可以存储像123、22这样的值)而不是BIT,而且它会占用比BIT更多的空间(我猜)?使用它可能是合法的,但我不认为它是合理的 有人能帮我澄清一下我的疑问吗 根据MySQL手册,您可以使用bool和
我是一名.NET程序员,有生以来第一次使用MySQL数据库 我想存储布尔值,MySQL有
位
,但是这个数据类型的.NET转换是UINT64
还有另一个数据类型TINYINT(1)
,它的.NET等价物是System.Boolean
,这将满足我的需要
但是为什么我要使用TINYINT(1)
(它可以存储像123、22这样的值)而不是BIT
,而且它会占用比BIT
更多的空间(我猜)?使用它可能是合法的,但我不认为它是合理的
有人能帮我澄清一下我的疑问吗
根据MySQL手册,您可以使用bool和boolean,它们目前是tinyint(1)的别名:
参考:
类似于MS SQL的位数据类型:
0 = False 1 = True
位
的工作方式与您想象的不同,它通常用于存储,而位(M)
需要大约(M+7)/8
(整数算术)字节的存储空间。使用位(1)
无论如何需要一个完整的字节,与TINYINT
一样,所以不用担心
如果您感兴趣,可以找到各种类型的存储要求。MySQL有BOOL和BOOLEAN,但它们是TINYINT(1)的同义词。零的值被认为是错误的。非零值被认为是真的。我猜MySQL的某个人考虑过这一点,认为TINYINT(1)是首选的方式。我自己也一直用这个
在这个类似的问题中还有一些信息:你所说的“.NET转换”是什么意思?如何将db值转换为.net类型?如果您是手动转换,您不能使用:Convert.ToBoolean(reader[“columnName”])这应该可以将位值转换为布尔值。没有问题。如果您使用DataReader并执行上述转换,则它可以正常工作。但是,如果您正在起诉DataTable并试图进行转换,那么它将不起作用。