我在数据库中有一个tinyint
列,我希望将其转换为Int32
SqlDataReader
。
我该怎么做?
编辑#1
我最近不得不这样做。
int a = dataReader.GetByte(dr.GetOrdinal("ColumnName"));
#In另外回答
SQL Server数据类型映射
bigint - GetInt64
binary - GetBytes
int - GetInt32
money - GetDecimal
rowversion - GetBytes
smallint - GetInt16
tinyint - GetByte
uniqueidentifier - GetGuid
...
有关详细信息,请访问 - SQL Server Data Type Mappings
答案 0 :(得分:86)
它通常以什么方式返回 - 字节?如果是这样,只需做一个unbox然后转换:
(int)(byte) reader["column"];
或者让转换自然发生:
int x = (byte) reader["column"];
或使用强类型方法执行相同的操作:
int x = reader.GetByte(column);
如果我错误地将其映射到sbyte
,请将其调整为short
或byte
或其他任何内容。您可以在SQL Server端进行转换,但我个人会在客户端进行转换,并使SQL更简单。
答案 1 :(得分:2)
每次使用“SByte”可以处理Tiny Int问题
答案 2 :(得分:0)
int RetValue;
RetValue = (int)(byte)dt.Rows[A][B] // A = RowNo , B = 'tinyint' Column Name.
答案 3 :(得分:0)
要从sql表中获取tinyint,请执行以下操作:
retorno = Convert.ToInt32(dr.GetByte(dr.GetOrdinal("StepStatus")));
其中retorno是一个int变量。
我希望这对你有所帮助。