Может ли T-SQL хранить ulong?

Я хочу хранить C#.NET ulong в базу данных T-SQL. Я не вижу никаких положений для этого, так как SQL bigint имеет те же значения Min / Max, что и обычный long.

есть ли способ сделать это? Или ловит OverflowException - моя единственная надежда?

2 ответов


Это должно ответить на ваш вопрос:

http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/ff08c190-a981-4896-9542-3f64b95a84a2/

вы бы использовали 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 что значительно меньше, чем десятичное можно хранить. Могут возникнуть проблемы с преобразованием, но я уверен, что пара функций оболочки в вашем приложении будет сортировать его довольно быстро.