Что эквивалентно bigint в C #? - PullRequest
187 голосов
/ 22 января 2010

Что я должен использовать при обработке значения в C #, которое является bigint для базы данных SQL Server?

Ответы [ 8 ]

309 голосов
/ 22 января 2010

Это соответствует long (или Int64 ), 64-битному целому числу.

Хотя, если число из базы данных окажется достаточно маленьким, и вы случайно используете Int32 и т. Д., Все будет в порядке. Но Int64 определенно его удержит.

А какую ошибку вы получите, если используете что-то меньшее и нужен полный размер? Переполнение стека! Ууу!

54 голосов
/ 22 января 2010

Int64 отображается непосредственно на BigInt.

Источник

10 голосов
/ 20 сентября 2010

У меня только что был скрипт, который возвращал первичный ключ вставки и использовал

SELECT @@identity

на моем первичном ключе bigint, и я получаю ошибку при использовании long - вот почему я начал этот поиск. Правильный ответ, по крайней мере в моем случае, состоит в том, что тип, возвращаемый этим выбором, является NUMERIC, что соответствует десятичному типу. Использование long вызовет исключение приведения.

Это одна из причин, чтобы проверить свои ответы в более чем одном поиске Google (или даже в переполнении стека!).

Цитирую администратора базы данных, который мне помог:

... BigInt - это не то же самое, что INT64, независимо от того, насколько они похожи. Частично причина в том, что SQL будет часто преобразовывать Int / BigInt в Numeric как часть обычной обработки. Поэтому, когда дело доходит до OLE или .NET, требуется преобразование NUMERIC в INT.

Мы не часто замечаем, так как напечатанное значение выглядит одинаково. "

5 голосов
/ 08 июля 2015

Вы можете использовать long тип или Int64

4 голосов
/ 22 января 2010

Используйте длинный тип данных.

2 голосов
/ 22 января 2010

Я думаю, что эквивалент Int64

1 голос
/ 14 июня 2016

int в sql напрямую отображается на int32 , также известный как примитивный тип, т.е. int в C # , тогда как

bigint в Sql Server сопоставляется непосредственно с int64 , также известным как тип примитива, т.е.

Явное преобразование, если определено большое целое в целое число здесь

0 голосов
/ 11 августа 2014

Я обрабатывал тип данных bigint для отображения в DataGridView и сделал его таким:

something = (int)(Int64)data_reader[0];
...