Подтвердить что ты не робот

Как вы можете преобразовать "tinyint" t-sql в integer в С#?

У меня есть столбец 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

4b9b3361

Ответ 1

Как обычно он возвращается в виде байта? Если это так, просто сделайте unbox и затем конвертируйте:

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

или просто разрешите преобразование естественным образом:

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

или сделать то же самое с строго типизированными методами:

int x = reader.GetByte(column);

Отрегулируйте это значение на sbyte или short или что-то еще, если я ошибаюсь в отношении его сопоставления с byte. Вы могли бы сделать преобразование на стороне SQL Server, но я лично сделал бы это на стороне клиента вместо этого и упростил бы SQL.

Ответ 2

Использование "SByte" работает каждый раз. Для решения проблемы Tiny Int.

Ответ 3

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

Ответ 4

Чтобы получить tinyint из таблицы sql, я делаю следующее:

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

Если retorno является переменной int.

Надеюсь, это поможет вам.