Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MySQL中存储布尔值的数据类型是什么?_C#_Mysql_Types_Sqldatatypes - Fatal编程技术网

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并试图进行转换,那么它将不起作用。