Может ли T-SQL хранить ulong?
Я хочу хранить C#.NET ulong
в базу данных T-SQL. Я не вижу никаких положений для этого, так как SQL bigint
имеет те же значения Min / Max, что и обычный long
.
есть ли способ сделать это? Или ловит OverflowException
- моя единственная надежда?
2 ответов
Это должно ответить на ваш вопрос:
вы бы использовали BigInt, вам просто нужно быть осторожным в том, как вы преобразуете подписанный тип обратно в неподписанный тип в C#
// This has not been tested
unchecked
{
myUlong = myDataReader.GetInt64(...);
}
...
другая возможность-использовать VarBinary длиной 8, а затем преобразовать байты в ulong в C#
Я знаю, что это не то же самое, но этого делать:
select convert(decimal(38, 0), 12345678901234567890123456789012345678)
максимальная беззнаковый Long кажется 18,446,744,073,709,551,615 что значительно меньше, чем десятичное можно хранить. Могут возникнуть проблемы с преобразованием, но я уверен, что пара функций оболочки в вашем приложении будет сортировать его довольно быстро.