สิ่งที่ฉันควรจะใช้เมื่อจัดการค่าใน C # ซึ่งมีขนาดใหญ่สำหรับฐานข้อมูล SQL Server
สิ่งที่ฉันควรจะใช้เมื่อจัดการค่าใน C # ซึ่งมีขนาดใหญ่สำหรับฐานข้อมูล SQL Server
คำตอบ:
ที่สอดคล้องกับความยาว (หรือInt64 ) ซึ่งเป็นจำนวนเต็ม 64 บิต
แม้ว่าตัวเลขจากฐานข้อมูลจะเล็กพอ แต่คุณใช้ Int32 โดยไม่ตั้งใจเป็นต้นคุณก็จะสบายดี แต่Int64จะเก็บไว้แน่นอน
และข้อผิดพลาดที่คุณได้รับถ้าคุณใช้บางอย่างที่เล็กกว่าและจำเป็นต้องใช้ขนาดเต็ม? กองล้น! เย้!
long
ไม่ได้เป็นตัวพิมพ์ใหญ่
ฉันเพิ่งมีสคริปต์ที่ส่งกลับคีย์หลักของการแทรกและใช้
SELECT @@identity
ในคีย์หลักของฉันที่มีขนาดใหญ่และฉันได้รับข้อผิดพลาดในการส่งโดยใช้เวลานานนั่นคือสาเหตุที่ฉันเริ่มการค้นหานี้ คำตอบที่ถูกต้องอย่างน้อยในกรณีของฉันคือประเภทที่ส่งคืนโดยตัวเลือกนั้นคือ NUMERIC ซึ่งเท่ากับประเภททศนิยม การใช้เวลานานจะทำให้เกิดข้อยกเว้นของการร่าย
นี่คือเหตุผลหนึ่งในการตรวจสอบคำตอบของคุณในการค้นหาของ Google มากกว่าหนึ่งครั้ง (หรือแม้แต่ใน Stack Overflow!)
หากต้องการอ้างอิงผู้ดูแลระบบฐานข้อมูลที่ช่วยฉัน:
... BigInt ไม่เหมือนกับ INT64 ไม่ว่าพวกเขาจะดูเหมือนกันมากแค่ไหนก็ตาม สาเหตุส่วนหนึ่งคือ SQL มักจะแปลง Int / BigInt เป็นตัวเลขเป็นส่วนหนึ่งของการประมวลผลปกติ ดังนั้นเมื่อไปที่ OLE หรือ. NET การแปลงที่ต้องการคือ NUMERIC ถึง INT
เราไม่ได้สังเกตบ่อยนักเนื่องจากค่าที่พิมพ์ออกมานั้นเหมือนกัน "
ใช้ประเภทข้อมูลแบบยาว
คุณสามารถใช้long
ประเภทหรือInt64
ฉันคิดว่าสิ่งที่เทียบเท่าคือ Int64
intใน sql map โดยตรงกับint32ยังรู้ว่าเป็นชนิดดั้งเดิมเช่นintในC #ในขณะที่
bigintใน Sql Server แมปโดยตรงกับint64และรู้ว่าเป็นชนิดดั้งเดิมเช่นยาวในC #
การแปลงที่ชัดเจนหากกำหนด biginteger เป็นจำนวนเต็มที่นี่
สำหรับกรณีส่วนใหญ่จะยาว (int64) ใน c #
ถ้าคุณใช้bigintในตารางฐานข้อมูลของคุณคุณสามารถใช้Longใน C #
ฉันกำลังจัดการประเภทข้อมูลขนาดใหญ่ที่จะแสดงใน DataGridView และทำให้เป็นเช่นนี้
something = (int)(Int64)data_reader[0];