MySqlClient访问tinyint字段返回布尔值

原文 MySqlClient访问tinyint字段返回布尔值

症状:

使用MySqlClient访问tinyint       unsign 字段返回布尔值 true 和        false,但是实际上该字段存储值为1-255
分析:

由于在Mysql中没有布尔类型值,MySqlClient在访问tinyint类型字段时默认作为布尔值使用。

解决:

1.在连接串中增加        Treat Tiny As Boolean=false        配置.

2.对应字段在SQL语句中*1,这样,读取出的字段值默认会被转换成int类型.

相关资料:

  根据官方文档        10.1.1. Overview of Numeric Types ,在 MySql 中还没有严格的 bool 类型,但使用 TINYINT(1)        隐式用作 bool 类型,零作为false,而非零值(包括负数)作为true。但,这是不对称的。在执行逻辑比较时,true 等于 1,false        等于 0,但 true 不等于 2。这个文档显示的 MySql 5.0,其他后续版本是否有严格的 bool 类型未知。

在 MySql       Connector/Net 中,遵循了上面这个约定,假如某个字段类型是 tinyint(1),则会被自动映射成 Boolean        类型。如果要禁用这个映射,可以在连接字符串中,配置 Treat Tiny As Boolean=false。这个选项的默认值是 true。参考        21.2.6. Connector/NET Connection String Options Reference 。没有查到这个选项从        Connector/Net 哪个版本开始支持,应该是 Connector/Net 5.x 之后都支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值