如何从TINYINT(1)列中检索int值而不是布尔值?

JYe*_*ton 6 .net mysql

我有一个MySQL列指定为:

`type` TINYINT(1) NOT NULL DEFAULT '0'
Run Code Online (Sandbox Code Playgroud)

该列的目的是存储一个不超过127的整数值,因为预计不会超过极少数的对象"类型".

我在其中一行中存储了'2'.

使用SqlYog,简单SELECT type FROM table得到正确的结果,2.

但是,使用Connector/Net 6.1.2(不可否认它有点过时,因为当前版本是6.5.4),会发生以下情况:

var Temp = Reader["type"].GetType(); // equals "Boolean"
Run Code Online (Sandbox Code Playgroud)

这种类型的列通常用于布尔值,但在这种情况下,我想要得到的整数值.以下未能产生预期结果:

int i = Reader.GetInt32("type"); // equals 1 (should be 2)
Run Code Online (Sandbox Code Playgroud)

在.NET应用程序中使用Connector/Net从TINYINT(1)列获取int值的正确方法是什么?

这是使用MySQL版本5.5.16

小智 5

将其放入连接字符串中以使用tinyint作为数字

TreatTinyAsBoolean=false


ype*_*eᵀᴹ 4

Connector的困惑的答案可能是MySQL文档中的这一部分;数字类型

从 MySQL 5.0.3 开始,有一种BIT数据类型可用于存储位字段值。(5.0.3之前,MySQL解释BITTINYINT(1)。)...

或者(更有可能)来自数字类型概述的这一部分:

BOOL, BOOLEAN

这些类型是 的同义词TINYINT(1)。零值被视为错误。非零值被视为 true ...