mysql 存储布尔值_关于c#:MySQL中存储布尔值的数据类型是什么?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:

Which MySQL Datatype to use for storing boolean values?

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

我想存储布尔值,mysql有BIT,但是这个数据类型的.NET转换是UINT64。

还有另一个数据类型TINYINT(1),它的.NET等价物是System.Boolean,这将满足我的目的。

但是为什么我要用TINYINT(1)代替BIT,它可以存储123、22这样的值,而且它比BIT还需要更多的空间(我猜)?使用它可能是合法的,但我不认为它是合乎礼仪的。

有人能帮我澄清一下我的疑问吗?

你所说的.NET转换是什么意思?如何将DB值转换为.NET类型?如果要手动转换,则不能使用:convert.toboolean(reader["columnname"]),这应该将位值转换为布尔值,没有问题。

如果您使用DataReader并进行上述转换,那么它可以正常工作。但是,如果您起诉DataTable并尝试进行转换,那么它将不起作用。

mysql有bool和boolean,但它们是tinyint(1)的同义词。零值被认为是错误的。非零值被认为是真的。我想MySQL有人考虑过了,认为Tinyint(1)是首选的方式。我一直都是自己用的。

在这个类似的问题中还有更多的信息:在MySQL中bit和tinyint有什么区别?

BIT不像你想象的那样工作,它通常用于存储位域,BIT(M)大约占用(M+7)/8字节(整数算术)的存储空间。无论如何,使用BIT(1)需要一个完整的字节,与TINYINT相同,所以不要担心。

如果您感兴趣,可以在这里找到各种类型的存储需求。

According to the MySQL manual you can use bool and boolean which are at the moment aliases of tinyint(1):

参考:用于存储布尔值的mysql数据类型

类似于MS SQL的位数据类型:

0 = False    1 = True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值