我在将t-sql中的smallint转换为C#中的整数时遇到了问题。
请问有人能帮我想办法解决这个问题吗?
更新 #1
我的真正目的是从在sqlserver 2005中标记为smallint的列中检索数据,并在我的应用程序中使用datareader。我很抱歉之前没有表述得够清楚。
我在将t-sql中的smallint转换为C#中的整数时遇到了问题。
请问有人能帮我想办法解决这个问题吗?
更新 #1
我的真正目的是从在sqlserver 2005中标记为smallint的列中检索数据,并在我的应用程序中使用datareader。我很抱歉之前没有表述得够清楚。
在C#中,还有一个名为 "short" 的 DataType,对应的是 System.Int16(在SQL Server中又称为 "smallint")。
我更喜欢使用 "short" 这个名称,只是因为它看起来更酷一些,没有其他原因。
此外,如果你的数据可以为空值,我会使用以下代码提取它:
short? sVal = dr["ColName"] is System.DBNull ? null : (short?)(dr["ColName"]);
不太确定您遇到了什么问题,因为smallint范围的数字是integer值范围的子集。
c#中的标准转换应该可以工作:
int intFromSmallInt = Convert.ToInt16(smallint);
这个错误是由ORM引起的吗?
int? value = (int?)(row["ColumnName"] as short?);