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?

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!


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


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 ".


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

Você pode usar longtipo ouInt64



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



0

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


-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];
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.