PDA

View Full Version : ado.net error handeling



linux
پنج شنبه 28 اردیبهشت 1385, 13:48 عصر
آیا تا حالا کسی کلاسی چیزی نوشته که تمام حالتهای خطا را پوشش بده ؟

M.kavyani
جمعه 29 اردیبهشت 1385, 14:58 عصر
منظورت چیه؟

linux
جمعه 29 اردیبهشت 1385, 18:37 عصر
خوب بعد از هر بار که دیتاست را با sqldataadapter پر می کنیم باید احتمال وجود خطا را هم چک کنیم یا هر بار که می خواهیم دیتا را sql منتقل کنیم خود ویبی این کد را در اسنیپتهاش داره


Try
' Add your data task here.
Catch concurrencyEx As DBConcurrencyException
Throw concurrencyEx
Catch constraintEx As ConstraintException
Throw constraintEx
Catch deletedRowEx As DeletedRowInaccessibleException
Throw deletedRowEx
Catch duplicateNameEx As DuplicateNameException
Throw duplicateNameEx
Catch inRowChangingEx As InRowChangingEventException
Throw inRowChangingEx
Catch invalidConstraintEx As InvalidConstraintException
Throw invalidConstraintEx
Catch invalidExpressionEx As InvalidExpressionException
Throw invalidExpressionEx
Catch missingPrimaryEx As MissingPrimaryKeyException
Throw missingPrimaryEx
Catch noNullEx As NoNullAllowedException
Throw noNullEx
Catch readOnlyEx As ReadOnlyException
Throw readOnlyEx
Catch rowNotInTableEx As RowNotInTableException
Throw rowNotInTableEx
Catch strongTypingEx As StrongTypingException
Throw strongTypingEx
Catch typedDataSetEx As TypedDataSetGeneratorException
Throw typedDataSetEx
Catch versionNotFoundEx As VersionNotFoundException
Throw versionNotFoundEx
Catch dataEx As DataException
Throw dataEx
Catch ex1 As Exception
Throw ex1
Finally
' Dispose of any resources you used in the Try block.
End Try

من نمی خواهم هر دفعه این همه کد را در فرم وارد کنم می خواهم یک تابعی به اسم showErr درست کنم و آن را صدا کنم ولی نمیشه!

RezaJP
جمعه 29 اردیبهشت 1385, 20:36 عصر
خوب همه این خطاها که امکان رخدادش برای یه کیس خاص وجود نداره ... برای هر جا باید بررسی کنی
البته همین الان که داشتم مینوشتم یه راهی به ذهنم رسید .. چک کن ببین چطوره
میتونی یه فانکشن بنویسی که یه مقدار از نوع Exeption بگیره بعدش توی اون تایپش رو چک کنه
و یه مقدار رشته که شامل اون پیام هست برگردونه
امیدوارم عملی باشه
اگه بود بذار اینجا بقیه هم استفاده کنن

linux
جمعه 29 اردیبهشت 1385, 21:42 عصر
در جدولی که من می خواهم با دیتا پرش کنم ممکن هست که هر کدام از این خطا ها رخ بدهد

RezaJP
جمعه 29 اردیبهشت 1385, 22:00 عصر
البته همین الان که داشتم مینوشتم یه راهی به ذهنم رسید .. چک کن ببین چطوره
میتونی یه فانکشن بنویسی که یه مقدار از نوع Exeption بگیره بعدش توی اون تایپش رو چک کنه
و یه مقدار رشته که شامل اون پیام هست برگردونه
امیدوارم عملی باشه
اگه بود بذار اینجا بقیه هم استفاده کنن
البته فکر کنم تا آخرش نخوندیاااااا

linux
جمعه 29 اردیبهشت 1385, 22:11 عصر
می دانم چه می گویی


Public Sub DisplaySqlErrors(ByVal exception As Data.SqlClient.SqlException)
Dim errmsg As String = ""
Dim title As String = ""
Select Case exception.Number
Case 2
errmsg = "نتیافتن sqlserver"
title = "خطا در اتصال به سرویس دهنده دیتا"
Pmsgbox.ShowMessage(0, errmsg, title, MessageBoxButtons.OK, MessageBoxIcon.Error)
Case 17142
errmsg = "سرور بطور موقت از کار ایستاده هست"
title = "خطا در اتصال به سرویس دهنده دیتا"
Pmsgbox.ShowMessage(0, errmsg, title, MessageBoxButtons.OK, MessageBoxIcon.Error)
Case 2627
errmsg = "رکورد تکراری هست"
title = "خطا در ورود اطلاعات"
Pmsgbox.ShowMessage(0, errmsg, title, MessageBoxButtons.OK, MessageBoxIcon.Error)
Case Else
Dim i As Integer
For i = 0 To exception.Errors.Count - 1
MsgBox("Index #" & i & "error number: " & exception.Number & ControlChars.NewLine & _
"Error: " & exception.Errors(i).ToString())
Next i
End Select
End Sub

این کد را نوشتم برای sqlexeption ولی اون طوری که شما میگید err میده.

RezaJP
جمعه 29 اردیبهشت 1385, 22:20 عصر
نه
من منظورم چیزه دیگه ای بود
حالا اگه فرصت شد مینویسم میذارم اینجا

linux
یک شنبه 31 اردیبهشت 1385, 21:19 عصر
پس چی شد؟ من منتظرم

RezaJP
یک شنبه 31 اردیبهشت 1385, 22:06 عصر
فرصت نشده هنوز ... شرمنده خیلی گرفتارم
از دوستان دیگه که متوجه منظورم شدن خواهش می کنم یه کاری بکنن