Как вы можете преобразовать "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
Ответы
Ответ 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.
Надеюсь, это поможет вам.