我有一个被指定为MySQL列的:
`type` TINYINT(1) NOT NULL DEFAULT '0'
该列的意图是存储一个不超过127的整数值,因为预计不会有太多对象“类型”。
我在其中一行的字段中存储了“2”。
使用SqlYog,简单的
SELECT type FROM table
查询可以得到正确的结果,即2。然而,使用Connector/Net 6.1.2(诚然,它有点过时,当前版本是6.5.4),会发生以下情况:
var Temp = Reader["type"].GetType(); // equals "Boolean"
这种类型的列通常用于布尔值,但在这种情况下,我想获得整数值。以下方法未能产生预期结果:
int i = Reader.GetInt32("type"); // equals 1 (should be 2)
在.NET应用程序中使用Connector/Net从TINYINT(1)列获取int值的正确方法是什么?
这是使用MySQL版本5.5.16
TINYINT
通常用于布尔类型。我建议只使用普通的INTEGER
类型字段,存储空间不会那么昂贵。 ;) - Jesse WebbSELECT CAST(type AS SIGNED) AS type FROM table
吗? - Eugen RieckBIGINT
的原因 :))也许我应该只使用SMALLINT
并结束它,但我想了解更多关于这种情况的技术背景。 - JYeltonReader.GetValue()
或Reader.GetSByte()
而不是Reader.GetInt32()
会发生什么? - ypercubeᵀᴹ.GetSByte()
可以工作。.GetValue()
没有,但它仍然返回一个布尔值。 - JYelton