Что эквивалентно bigint в C #?

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


person Asad    schedule 21.01.2010    source источник


Ответы (11)


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

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

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

person Patrick Karcher    schedule 21.01.2010
comment
Уверены, что это не целочисленное переполнение? - person luqui; 09.08.2012
comment
Хорошая ссылка для других типов данных: msdn.microsoft.com/en -us / library / system.data.sqldbtype.aspx - person MacGyver; 17.08.2012
comment
в C # long не пишется с заглавной буквы. - person Shawn Kovac; 16.03.2014

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

Источник

person ChaosPandion    schedule 21.01.2010
comment
длинное другое имя для Int64 / - person Asad; 22.01.2010
comment
да. Ключевое слово long - это псевдоним для System.Int64. - person Anon.; 22.01.2010

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

SELECT @@identity

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

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

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

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

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

person Robb Sadler    schedule 20.09.2010
comment
Спасибо за числовой совет .. просто мне очень помог! - person jpshook; 27.10.2011
comment
Вы получили ошибку приведения, потому что SCOPE_IDENTITY и @@ IDENTITY возвращают NUMERIC (38, 0), а не потому, что ваш BigInt PK не вписывается в C # Int64. Другими словами, BigInt то же самое, что и Int64, но значения BigInt, возвращаемые через SCOPE_IDENTITY или @@ IDENTITY, могут быть преобразованы с повышением в NUMERIC (38, 0). - person Dan Hermann; 05.01.2014
comment
Спасибо, Дэн. К вашему сведению, все еще происходит с SQL Azure (RTM) - 12.0.2000.8 и .NET v 4.5 - person Gunnar; 11.09.2015

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

person Community    schedule 08.07.2015

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

person Otávio Décio    schedule 21.01.2010

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

person John Boker    schedule 21.01.2010

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

bigint в Sql Server напрямую сопоставляется с int64, также известным как примитивный тип, т.е. long в C #

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

person Technacron    schedule 14.06.2016

В большинстве случаев это long (int64) в С #

person Rajeev Sirohi    schedule 04.02.2020
comment
Кажется, это просто повторение существующих ответов. - person Pang; 30.12.2020

если вы используете bigint в таблице базы данных, вы можете использовать Long в C #

person Abbasibh    schedule 18.05.2020
comment
Кажется, это просто повторение существующих ответов. - person Pang; 30.12.2020

int (64) или long Datatype эквивалентно BigInt.

person Tanvir Mahtab    schedule 22.02.2021

Я обрабатывал тип данных bigint, который должен отображаться в DataGridView, и сделал его следующим образом

something = (int)(Int64)data_reader[0];
person Rúben    schedule 11.08.2014