من یک فرم برای ورود اطلاعات در محیط Visual با زبان #C ایجاد کردم . مواقعی که کاربر در ورود اطلاعت دچار خطا می شود مثلا ورود ID تکراری یک خطای SQL دریافت می کند. لطفا به من بگوویید چطور می توانم یک Error مناسب و بهتر خودم تعریف و جایگزین کنم.
من یک فرم برای ورود اطلاعات در محیط Visual با زبان #C ایجاد کردم . مواقعی که کاربر در ورود اطلاعت دچار خطا می شود مثلا ورود ID تکراری یک خطای SQL دریافت می کند. لطفا به من بگوویید چطور می توانم یک Error مناسب و بهتر خودم تعریف و جایگزین کنم.
سلام
ضمن تبریک عضویت شما دوست عزیز ...
با کمک کلمه کلیدی try در هر دو زبان vb و #c میتوانید خطاها را هندلر کنید و عمل مناسبی در قبال انها انجام دهید.
(البته بهتر است تا حد امکان خطاها را پیشبینی کنید و قبل از وقوع آنها کار مناسب را انجام دهید)
کلمه کلیدی فوق در پست های 69 و 57 زیر توضیح داده شده اند:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ممنون از راهنماییتون. من یک نکته را متوجه نمی شوم این کد را کجا قرار دهیم تا قبل از دریافت یک خطای Sql ای که در اثر فرستاده شدن رشته Sql به تابع DoCommand در Data Access Layer و اجرای آن در ExecuteNonQuery ایجاد می شود, بتوان یک Error مناسب ارائه داد.
ظاهرا در برنامه ات از چند لایه استفاده می کنی!!
طبعا هم به جای سخت نویسی رشته SQL از Stored Procedure استفاده کردی. اگه جواب درسته :
می تونی در داخل SP ها از دستورات شرظی استفاده کنی و چک کنی تا مشخص بشه مشکلی نیست اگر مشکلی بود همانجا یک ارور رو برای درخواست کننده می فرستی تا به کاربر بده.
مثلا من می خوام قبل از اینکه ایتم جدیدی در بانک اضافه بشه چک کنم آیا قبلا ایتمی با این مشخصات موجوده یا نه
اون عدد های 18 و 1 هم میزان حساسیت خطای شما رو مشخص می کنه پرا نتزها رو خودت درست کن .If exist (select X,y from table where id=1در این جا می تونی ایتم جدیدت رو اضافه کنی, چرا که همچنین ID موجود نیست
begin
RAISERROR("this id is already in database, try with another id",18,1
End
else
Begin try
End try
Begin catch
RAISERROR ("Insert failed,18,1
Return
End catch
اگر هم از SP استفاده نمی کنی باید بتونی شماره پیام رو بگیری و با توجه به اون پیام مناسب خودت رو بدی
در ضمن نوع Exception هم باید از نوع SQLexception تعریف شود
خوب من از SP استفاده نکردم اما می نویسم این طوری راحت تر می شود. نظرت در مورد Trigger نوشتن چیه اون را از نوع Inserted تعریف کنم و اگه در table این ID وحود داشت Rollback کنم با یک پیغام ولی مشکل اینجا است که پیغام با Print پاس داده نمی شه درسته؟
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)