繁体   English   中英

如何在 C# 中从 MySQL 检索 tinyint 数据类型?

[英]How do I retrieve a data type of tinyint from MySQL in C#?

因此,在 C# 中,每当我从 MSSQL 数据库中检索 tinyint 时,我都会使用以下强制转换。

(int)(byte)reader["MyField"];

但是,该演员表在 MySQL 中似乎不起作用。

我试过的

(byte)reader["MyField"];

只是

(int)reader["MyField"];

编辑 1

例外

The specified cast is not valid.

编辑 2

这是数据类型。

{Name = "SByte" FullName = "System.SByte"}

要确定正确的类型,请查看的值

reader["MyField"].GetType()

在调试器中。

问题是由于强制转换和显式运算符:

(byte)objectExpression(byte)sbyteExpression

第一个是[直接]铸造因为真正的对象类型是失败sbyte而不是byte 后者将执行恰好使用明确的运算符(“显式转换”)的语法,不幸的是,看起来还是像[直接]按上述转换 以下是 sans-database 失败的示例:

var obj = (object)(sbyte)0;
var i1 = (int)(sbyte)obj;  // okay: object (cast)-> sbyte (conversion)-> int
var i2 = (int)obj;         // fail: sbyte (cast)-> int (but sbyte is not int!)

要么使用对真实对象类型有效的(sbyte)objectExpression ,要么使用Convert.ToInt32(objectExpression)接受一个object并执行一些魔法转换为 int。 (使用Convert.ToByte可能会在溢出时引发异常。)

快乐编码!

我可以建议让系统对自己工作吗? DataReader 类提供了获取正确类型值的功能:

reader.GetInt32("id");
reader.GetByte("MyByteField");

通过这种方式,阅读器为您提供您期望的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM