ورود

نسخه کامل مشاهده نسخه کامل : چرا strID هم به صورت رشته و هم به صورت یک عدد صحیح قابل قبول است؟



قله بلند
16-12-2008, 12:50
با عرض سلام
من با استفاده یک وب سرویس، عمل درج در جدول Region از پایگاه داده Northwind را انجام می دهم.
راجع به خود وب سرویس سوالی ندارم. ولی به مساله جالبی برخورد کرده ام.
قبل از عمل درج، باید کلید اصلی جدول Region پیدا شود و با افزودن یک واحد به آن، RegionID رکورد بعد مشخص شود. همانطور که می دانید، RegionID یک عدد صحیح است.
حالا به قطعه کد زیر که از این وب سرویس استخراج شده توجه کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همانطور که ملاحظه می فرمایید، StrID یک رشته است و این رشته نیز قرار است مقدارش را به RegionID بدهد. حال اگر در خط کد زیر به جای StrID که یک رشته است، intmaxID را که یک عدد صحیح است، قرار دهیم اتفاقی که منجر به غیر منطقی شدن و یا بد کار کردن برنامه شود نمی افتد. چرا؟

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مگر نه اینکه RegionID یک عدد صحیح است ، پس چرا در عمل درج فرقی نمی کند که این عدد صحیح به صورت رشته وارد شود و یا به صورت عدد صحیح؟


امیدوارم سوال را قابل درک بیان کرده باشم.

قله بلند
19-12-2008, 21:22
سلام دوستان
کسی جوابی برای این سوال می داند؟
به نظر نکته جالبی است

_H2_
20-12-2008, 23:38
سلام
کار صحیحی نیست و میتواند مشکل ساز شود ولی اگر کار میکند، احتمالاً به sqlserver مربوط میشود که سعی میکند دیتای دریافتی را به نوع مطلوب خود تبدیل کنید.
یک نوع CONVERT یا CAST که به صورت خودکار از طرف sqlserver روی پارامترهای دریافتی انجام شده.

قله بلند
21-12-2008, 18:58
سلام
پس آیا رفتار درست این است که به جای StrID رشته ای،intmaxID صحیح رو قرار بدم؟
من از SQL2000 استفاده می کنم و می خواهم این موضوع رو در SQL2005 نیز مورد آزمون قرار بدم. به نظر نتیجه باید جالب باشه.
اگر درSQL2005 هم موضوع اینگونه بود، می شه نتیجه گرفت که مشکلی پیش نخواهد آمد؟

_H2_
22-12-2008, 02:05
سلام

پس آیا رفتار درست این است که به جای StrID رشته ای،intmaxID صحیح رو قرار بدم؟
بله، این کار منطقی و اطمینان بخش است.


من از SQL2000 استفاده می کنم و می خواهم این موضوع رو در SQL2005 نیز مورد آزمون قرار بدم. به نظر نتیجه باید جالب باشه.
اگر درSQL2005 هم موضوع اینگونه بود، می شه نتیجه گرفت که مشکلی پیش نخواهد آمد؟
اگر کار هم کند، باز بهتر است از این دستورات دوری کنید.
کد محکم و مستحکمی بنویسید که شکی برای شما ایجاد نکند، طوری که بتوانید قاطع به کد خود اطمینان داشته باشید.
از کدنویسی زیاد نترسید.

تازه من به شخصه، همان کد خوب شما را هم مستحکم نمیدانم و حداقل کد زیر را پیشنهاد میکنم که نوع دیتا هم صراحتاً مشخص شده باشد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید