Qual é o equivalente de bigint em C #?

209

O que devo usar ao manipular um valor em C #, o que é um grande exemplo para um banco de dados SQL Server?

Asad
fonte

Respostas:

354

Isso corresponde ao longo (ou Int64 ), um número inteiro de 64 bits.

Embora se o número do banco de dados for pequeno o suficiente e você acidentalmente usar um Int32, etc., você estará bem. Mas o Int64 definitivamente o segurará.

E o erro que você recebe se você usa algo menor e é necessário o tamanho completo? Um estouro de pilha! Yay!

Patrick Karcher
fonte
100
Claro que não é excesso de número inteiro?
luqui 9/08/12
6
Boa referência para mais tipos de dados: msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx
MacGyver
3
em c #, longnão é maiúsculo.
Shawn Kovac
converter datetime para long?
Kiquenet 6/05/19
60

Int64mapeia diretamente para BigInt.

Fonte

ChaosPandion
fonte
3
é outro nome longo para Int64 /
Asad
11
Sim. A longpalavra-chave é um alias para System.Int64.
Anon.
12

Eu só tinha um script que retornava a chave primária de uma inserção e usava um

SELECT @@identity

na minha chave primária bigint e recebo um erro de conversão usando long - foi por isso que iniciei esta pesquisa. A resposta correta, pelo menos no meu caso, é que o tipo retornado por esse select é NUMERIC, o que equivale a um tipo decimal. Usar um longo causará uma exceção de conversão.

Esse é um dos motivos para verificar suas respostas em mais de uma pesquisa no Google (ou mesmo no Stack Overflow!).

Para citar um administrador de banco de dados que me ajudou:

... BigInt não é o mesmo que INT64, não importa o quanto eles se pareçam. Parte do motivo é que o SQL frequentemente converte Int / BigInt em Numeric como parte do processamento normal. Portanto, quando for para OLE ou .NET, a conversão necessária será NUMERIC para INT.

Frequentemente, não percebemos, pois o valor impresso parece o mesmo ".

Robb Sadler
fonte
Obrigado pela dica numérica .. só me ajudou muito!
jpshook
8
Você obteve um erro de conversão porque SCOPE_IDENTITY e @@ IDENTITY retornam NUMERIC (38, 0), não porque seu BigInt PK não se encaixa em um C # Int64. Em outras palavras, BigInt é o mesmo que Int64, mas os valores BigInt retornados por SCOPE_IDENTITY ou @@ IDENTITY podem ser convertidos para NUMERIC (38, 0).
Dan Hermann
Obrigado Dan. FYI, ainda acontecendo com o SQL Azure (RTM) - 12.0.2000.8 e .NET v 4.5
Gunnar
6

Use um tipo de dados longo.

Otávio Décio
fonte
6

Você pode usar longtipo ouInt64


fonte
2

Eu acho que o equivalente é Int64

John Boker
fonte
1

int em sql mapeia diretamente para int32 também conhecido como um tipo primitivo, isto é, int em C # enquanto

bigint no Sql Server mapeia diretamente para o int64 também conhecido como um tipo primitivo, ou seja, longo em C #

Uma conversão explícita se biginteger para inteiro foi definido aqui

Technacron
fonte
0

Na maioria dos casos, é longo (int64) em c #

Rajeev Sirohi
fonte
0

se você estiver usando bigint na tabela do banco de dados, poderá usar Long em c #

Abbasibh
fonte
-3

Eu estava manipulando um tipo de dados bigint a ser mostrado em um DataGridView e o fiz dessa maneira

something = (int)(Int64)data_reader[0];
Rúben
fonte