【发布时间】:2012-06-10 23:35:41
【问题描述】:
所以在 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"] + 0;吗? -
@Hans 这不会编译:表达式在此处键入
object + int,但没有匹配的+运算符。 -
你试过
int.Parse(reader["MyField"].ToString());吗? -
@Hans 这实际上可行……但为什么呢? ;-)
-
我描述的两种方法是在不同数据类型之间编程并实际取回值的最懒惰的方法。第一个将自动调用该对象到
byte、int、double、float或long的任何隐式转换,然后可以将其转换为int。第二个物理上获取对象的ToString(),如果针对您的对象类型正确实现,则应该返回一串数字,int.Parse应该能够将其读取为int。这些方法不需要知道数据类型是什么,而是使用(可能效率低下)类型特定的方法。