How can you convert "tinyint" of t-sql to integer in c#?
C#Sql ServerC# Problem Overview
I have a tinyint
column in the database and I wish to convert it to Int32
for an SqlDataReader
.
How do i go about it?
Edit #1
I recently had to do this.
int a = dataReader.GetByte(dr.GetOrdinal("ColumnName"));
#In Addition to Answer
SQL Server Data Type Mappings
bigint - GetInt64
binary - GetBytes
int - GetInt32
money - GetDecimal
rowversion - GetBytes
smallint - GetInt16
tinyint - GetByte
uniqueidentifier - GetGuid
...
For more info visit - SQL Server Data Type Mappings
C# Solutions
Solution 1 - C#
What does it normally come back as - byte? If so, just do an unbox and then a convert:
(int)(byte) reader["column"];
or just let the conversion happen naturally:
int x = (byte) reader["column"];
or do the same with the strongly typed methods:
int x = reader.GetByte(column);
Adjust this to sbyte
or short
or whatever if I'm wrong about it mapping to byte
. You could do the conversion at the SQL Server side, but I'd personally do it at the client side instead, and keep the SQL simpler.
Solution 2 - C#
Use "SByte" works every-time For handling the Tiny Int problem
Solution 3 - C#
int RetValue;
RetValue = (int)(byte)dt.Rows[A][B] // A = RowNo , B = 'tinyint' Column Name.
Solution 4 - C#
To get a tinyint from a sql table i do the following:
retorno = Convert.ToInt32(dr.GetByte(dr.GetOrdinal("StepStatus")));
Where retorno is a int variable.
I hope this help you.