سؤال

لدي صفحة ويب قمت بربطها بـ الإجراء المخزن.في مصدر بيانات SQL هذا، لدي معلمة أقوم بتمريرها مرة أخرى إلى الإجراء المخزن من النوع int.

أسب.نت يبدو أنه يريد الافتراضي int32, لكن العدد لن يزيد عن 6.هل من المقبول تجاوز الإعداد الافتراضي لـ ASP.NET ووضعه في 16 أم أنه سيكون هناك تعارض في مكان ما في المستقبل؟

تخصيص:يبلغ طول حقل قاعدة البيانات 4 ودقة 10، إذا كان ذلك يحدث فرقًا في الإجابة.

هل كانت مفيدة؟

المحلول

إذا أجبرته على أن يكون على سبيل المثال بايتًا وكان الرقم أكبر من 255، فإنك تتعرض لخطر حدوث خطأ في الإرسال (وسيتم طرح استثناء).ومع ذلك، إذا كنت تعلم أنه لن يكون أعلى من 6، فلا ينبغي أن تكون هناك مشكلة.

إذا كنت أنا، فسأستخدمه فقط باعتباره int عادي، ولست متأكدًا من أنك ستوفر الكثير إذا كان هناك أي شيء بخلاف بضع بايتات عن طريق جعله بايت.إن خطر طرح الاستثناء مرتفع جدًا وستفقد جميع الفوائد عن طريق جعله أصغر.

نصائح أخرى

العصا مع int32.هذا هو "عدد صحيح" الخاص بـ vb و INT الخاص بـ SQL، على أي حال.

لن تحصل على أي تحسن كبير في الأداء باستخدام tinyint/byte أو short/int16 بدلاً من int/int32.

في الواقع، فإن الصداع الذي قد تواجهه في المستقبل بسبب كل عمليات الصب التي قد يتعين عليك القيام بها للكائنات التي تتوقع int32s سوف يدفعك إلى الجنون.

عندما تقول أن حقل قاعدة البيانات يبلغ طوله 4، فهذا يعني 4 بايت، وهو ما يعادل Int32 (4 بايت = 32 بت).لهذا السبب يتم إرجاع العمود الخاص بك كـ int32.

هناك مختلفة أنواع البيانات الصحيحة في SQL Server - إذا كنت متأكدًا من أن الرقم لن يزيد عن 6، فيجب عليك تعريف العمود في قاعدة البيانات بأنه "tinyint"، والذي يستخدم بايتًا واحدًا ويمكنه الاحتفاظ بالقيم من 0 إلى 255.ثم يجب أن يقوم مصدر بيانات SQL بتحويلها إلى نوع بيانات "بايت"، وهو ما سيكون مناسبًا لأغراضك.

clr "byte" == sql "tinyint" (1 byte) clr "Short" (أو int16) == sql "smallint" (2 bytes) clr "int32" == sql "int"

يحرر:فقط لأنك تستطيع أن تفعل شيئًا ما، لا يعني أنك يجب أن تفعل ذلك - أنا أتفق مع ذلك مايكل هارين, ، فإن صداع التطوير الناتج عن إدارة أنواع البيانات الأقل شيوعًا يفوق مكاسب الأداء الصغيرة التي قد تحصل عليها، إلا إذا كنت تتعامل مع برامج عالية الأداء جدًا (وفي هذه الحالة، لماذا تستخدم ASP.NET؟)

لا يمكنك توفير الكثير إن وجدت باستخدام Int16 من جانب ASP.لا يزال يتعين عليه تحميله في سجل 32 بت في النهاية.

لمعلوماتك، يقوم CLR بتعيين Int32 داخليًا على أي حال.

استخدم ما لديك خادم قاعدة البيانات تم تعريف الإجراء المخزن.إذا كان int في SQL Server، ثم استخدم Int32 في .NET.Smallint في SQL هو int16.

بخلاف ذلك، سيقوم SQL Server بتحويله تلقائيًا، أو سيظهر خطأ إذا كان بحاجة إلى تحويله إلى مستوى أدنى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top