2010-01-21 47 views

Trả lời

247

Điều đó tương ứng với dài (hoặc Int64), một số nguyên 64 bit.

Mặc dù nếu số từ cơ sở dữ liệu xảy ra đủ nhỏ và bạn vô tình sử dụng Int32, v.v., bạn sẽ ổn. Nhưng Int64 chắc chắn sẽ giữ nó.

Và lỗi bạn nhận được nếu bạn sử dụng thứ gì đó nhỏ hơn và kích thước đầy đủ là cần thiết? Ngăn xếp ngăn xếp! Yay!

+77

Chắc chắn nó không phải là tràn số nguyên? – luqui

+3

Tham khảo tốt để biết thêm các loại dữ liệu: http://msdn.microsoft.com/en-us/library/system.data.sqldbtype.aspx – MacGyver

+1

Luồng ngăn xếp đệ quy ... – Nate

43

Int64 bản đồ trực tiếp đến BigInt.

Source

+3

là tên dài khác cho Int64/ –

+9

Yes. Từ khóa 'long' là một bí danh cho' System.Int64'. –

3

Sử dụng một kiểu dữ liệu dài.

2

Tôi nghĩ rằng tương đương là Int64

9

Tôi chỉ có một kịch bản đó quay trở lại khóa chính của một chèn và sử dụng một

SELECT @@identity 

trên khóa chính bigint của tôi, và tôi nhận được một lỗi diễn viên sử dụng dài - đó là lý do tại sao tôi bắt đầu tìm kiếm này. Câu trả lời đúng ít nhất trong trường hợp của tôi là kiểu được trả về bởi lựa chọn đó là NUMERIC tương đương với một kiểu thập phân. Sử dụng một thời gian dài sẽ gây ra một ngoại lệ cast.

Đây là một lý do để kiểm tra câu trả lời của bạn trong nhiều tìm kiếm của Google (hoặc thậm chí trên Stack Overflow!).

Để trích dẫn một quản trị cơ sở dữ liệu, người đã giúp tôi ra:

... bigint là không giống như Int64 dù có bao nhiêu họ trông giống nhau. Một phần của lý do là SQL sẽ thường xuyên chuyển đổi Int/BigInt thành Numeric như một phần của quá trình xử lý thông thường. Vì vậy, khi nó chuyển sang OLE hoặc .NET, chuyển đổi bắt buộc là NUMERIC thành INT.

Chúng tôi thường không để ý vì giá trị in trông giống nhau."

+0

Cảm ơn lời khuyên về số .. đã giúp tôi trong thời gian lớn! – jpshook

+0

Chỉ cần giúp tôi ra ngoài, đọc BigInt Scope_Identity – cost

+6

Bạn gặp lỗi truyền vì SCOPE_IDENTITY và @@ IDENTITY trả về NUMERIC (38, 0), không phải vì PK BigInt của bạn không vừa với C# Int64. Nói cách khác, BigInt _is_ giống với Int64, nhưng các giá trị BigInt được trả về thông qua SCOPE_IDENTITY hoặc @@ IDENTITY có thể được chuyển đổi thành NUMERIC (38, 0). – Dan

0

tôi đã xử lý một datatype bigint được hiển thị trong một DataGridView và làm cho nó như thế này

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

là bạn đang cố gắng để downcast? – Technacron

3

Bạn có thể sử dụng long loại hoặc Int64

2

int trong các bản đồ sql trực tiếp đến int32 cũng được biết như là một loại tức là nguyên thủy int trong C# trong khi

bigint trong các bản đồ sql trực tiếp đến Int64 cũng biết như một loại nguyên thủy i.e phao trong C#

Một chuyển đổi rõ ràng nếu BigInteger để nguyên đã được xác định here

Các vấn đề liên quan