可遇不可求的Question之MySqlClient访问tinyint字段返回布尔值篇
2010-12-10 09:58
183 查看
症状:
使用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 之后都支持。
使用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 之后都支持。
相关文章推荐
- 可遇不可求的Question之MySqlClient访问字段返回System.Byte[]篇
- 可遇不可求的Question之MySqlClient与ODBC访问字段返回不同结果篇
- MySqlClient访问tinyint字段返回布尔值篇
- MySqlClient访问tinyint字段返回布尔值
- ruby on rails mysql中tinyint字段返回布尔值问题
- 可遇不可求的Question之MySqlClient的Guid 类型的映射篇
- 可遇不可求的Question之ODBC访问MySql乱码篇
- mysql返回字段,当没记录时返回0的解决方法
- mysql整数字段 int bigint smallint tinyint
- mysql中为用户设置数据库,数据表,字段(列)的访问权限
- 可遇不可求的Question之MYSQL的10060和10061错误篇
- FireDAC 如何按整型(Byte)读取 MySQL TinyInt(1) 类型字段?
- hibernate与mysql tinyint字段映射问题
- 使用Wisdom RESTClient进行自动化测试,如何取消对返回的body内容的校验?对排除的JSON属性字段不做校验?
- MySql 如果字段为NULL则返回0
- JPA访问mysql时候出现了某个字段与数据库关键字重复
- MySql使用小结:允许远程访问、更改最大连接数、VARCHAR字段占用的空间、linux下安装workbench
- 可遇不可求的Question之mysql连接数暴增的解决方法篇
- mysql tinyint smallint mediumint int bigint 字段详解
- mysql查询字段为null 返回0