如何在C#中将T-SQL的"tinyint"转换为整数?

62

我在数据库中有一个tinyint列,我希望将其转换为Int32以供SqlDataReader使用。

我该怎么做?

编辑 #1

最近我也遇到了这个问题。

int a = dataReader.GetByte(dr.GetOrdinal("ColumnName"));

#除答案外的补充

SQL Server数据类型映射

bigint           - GetInt64  
binary           - GetBytes  
int              - GetInt32  
money            - GetDecimal  
rowversion       - GetBytes  
smallint         - GetInt16  
tinyint          - GetByte  
uniqueidentifier - GetGuid   
...

欲了解更多信息,请访问 - SQL Server 数据类型映射

4个回答

92
通常它会以字节(byte)的形式返回吗?如果是这样,只需进行拆箱和转换操作即可:
(int)(byte) reader["column"];

或者自然进行转换:

int x = (byte) reader["column"];

或者使用强类型方法进行相同的操作:

int x = reader.GetByte(column);

如果我对它映射到 byte 的说法错误,请将其调整为 sbyteshort 或其他类型。您可以在 SQL Server 端进行转换,但我个人更愿意在客户端进行转换,并保持 SQL 更简单。


2

使用"SByte"类型来处理Tiny Int问题,这样可以保证每次都能正常工作。


3
sbyte 的取值范围为 -128 到 127,而 tinyint 的取值范围为 0 到 255。请注意,你可能需要重新考虑这个答案。 - Patrick Artner

0
int RetValue;
RetValue = (int)(byte)dt.Rows[A][B]  // A = RowNo , B = 'tinyint' Column Name.

0

从 SQL 表中获取 tinyint,我会执行以下操作:

retorno = Convert.ToInt32(dr.GetByte(dr.GetOrdinal("StepStatus")));

其中 retorno 是一个整型变量。

希望这能帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接