Tương đương với bigint trong C # là gì?


209

Những gì tôi phải sử dụng khi xử lý một giá trị trong C #, đó là điểm lớn cho cơ sở dữ liệu SQL Server?

Câu trả lời:


354

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

Mặc dù nếu số lượng 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 thôi. 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 một cái gì đó nhỏ hơn và kích thước đầy đủ là cần thiết? Một chồng tràn! Yay!


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

6
Tài liệu tham khảo tốt cho nhiều loại dữ liệu hơn: msdn.microsoft.com/en-us/l Library / system.data.sqldbtype.aspx
MacGyver

3
trong C #, longkhông được viết hoa.
Shawn Kovac

chuyển đổi datetime thành dài?
Kiquenet

60

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

Nguồn


3
là tên gọi dài khác của Int64 /
Asad

11
Đúng. Các longtừ khóa là một bí danh cho System.Int64.
Anon.

12

Tôi vừa có một tập lệnh trả về khóa chính của một tệp chèn và sử dụng một tập lệnh

SELECT @@identity

trên khóa chính bigint của tôi và tôi gặp lỗi cast trong thời gian 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à loại được trả về bởi lựa chọn đó là NUMERIC tương đương với loại thập phân. Sử dụng lâu sẽ gây ra một ngoại lệ diễn viên.

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

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

... BigInt không giống như INT64 cho dù chúng trông giống nhau đến mức nào. Một phần 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 sang INT.

Chúng tôi thường không nhận thấy vì giá trị in trông giống nhau. "


Cảm ơn các mẹo số .. chỉ giúp tôi ra thời gian lớn!
jpshook

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

Cảm ơn Dân. FYI, vẫn xảy ra với SQL Azure (RTM) - 12.0.2000.8 & .NET v 4.5
Gunnar


6

Bạn có thể sử dụng longloại hoặcInt64



1

int in sql maps trực tiếp đến int32 cũng được biết đến như một kiểu nguyên thủy tức là int trong C # trong khi

bigint trong Sql Server ánh xạ trực tiếp đến int64 cũng được biết đến như một kiểu nguyên thủy, tức là dài trong C #

Một chuyển đổi rõ ràng nếu biginteger thành số nguyên đã được xác định ở đây



0

nếu bạn đang sử dụng bigint trong bảng cơ sở dữ liệu của mình, bạn có thể sử dụng Long trong C #


-3

Tôi đã xử lý một kiểu dữ liệu bigint được hiển thị trong DataGridView và làm cho nó giống như thế này

something = (int)(Int64)data_reader[0];
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.