PDA

نسخه کامل مشاهده نسخه کامل : Error در Sql



samanta 87
03-01-2011, 00:14
من یک فرم برای ورود اطلاعات در محیط Visual با زبان #C ایجاد کردم . مواقعی که کاربر در ورود اطلاعت دچار خطا می شود مثلا ورود ID تکراری یک خطای SQL دریافت می کند. لطفا به من بگوویید چطور می توانم یک Error مناسب و بهتر خودم تعریف و جایگزین کنم.

_H2_
03-01-2011, 01:37
سلام
ضمن تبریک عضویت شما دوست عزیز ...

با کمک کلمه کلیدی try در هر دو زبان vb و #c میتوانید خطاها را هندلر کنید و عمل مناسبی در قبال انها انجام دهید.
(البته بهتر است تا حد امکان خطاها را پیشبینی کنید و قبل از وقوع آنها کار مناسب را انجام دهید)

کلمه کلیدی فوق در پست های 69 و 57 زیر توضیح داده شده اند:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

samanta 87
03-01-2011, 21:37
ممنون از راهنماییتون. من یک نکته را متوجه نمی شوم این کد را کجا قرار دهیم تا قبل از دریافت یک خطای Sql ای که در اثر فرستاده شدن رشته Sql به تابع DoCommand در Data Access Layer و اجرای آن در ExecuteNonQuery ایجاد می شود, بتوان یک Error مناسب ارائه داد.

anvar.net
05-01-2011, 14:47
ظاهرا در برنامه ات از چند لایه استفاده می کنی!!

طبعا هم به جای سخت نویسی رشته SQL از Stored Procedure استفاده کردی. اگه جواب درسته :

می تونی در داخل SP ها از دستورات شرظی استفاده کنی و چک کنی تا مشخص بشه مشکلی نیست اگر مشکلی بود همانجا یک ارور رو برای درخواست کننده می فرستی تا به کاربر بده.

مثلا من می خوام قبل از اینکه ایتم جدیدی در بانک اضافه بشه چک کنم آیا قبلا ایتمی با این مشخصات موجوده یا نه





If exist (select X,y from table where id=1

begin

RAISERROR("this id is already in database, try with another id",18,1

End

else

Begin try

در این جا می تونی ایتم جدیدت رو اضافه کنی, چرا که همچنین ID موجود نیست

End try

Begin catch

RAISERROR ("Insert failed,18,1

Return

End catch




اون عدد های 18 و 1 هم میزان حساسیت خطای شما رو مشخص می کنه پرا نتزها رو خودت درست کن .

اگر هم از SP استفاده نمی کنی باید بتونی شماره پیام رو بگیری و با توجه به اون پیام مناسب خودت رو بدی
در ضمن نوع Exception هم باید از نوع SQLexception تعریف شود

samanta 87
11-01-2011, 21:46
خوب من از SP استفاده نکردم اما می نویسم این طوری راحت تر می شود. نظرت در مورد Trigger نوشتن چیه اون را از نوع Inserted تعریف کنم و اگه در table این ID وحود داشت Rollback کنم با یک پیغام ولی مشکل اینجا است که پیغام با Print پاس داده نمی شه درسته؟