2010-08-05 4 views
0

코드에 오류를 발생시키는 쿼리를 삽입해야하는 로그 테이블이 있습니다. "WritetoLog"라는 공통 함수가 있습니다.throw 된 예외에서 쿼리 가져 오기

Catch ex As Exception 
    writetolog(ex) 
End Try 

내 질문은 오류를 일으키는 검색어를 어떻게 사용합니까?

SQL 쿼리 오류가 발생 쿼리 + ex.Message : 온도 ('1', 'Anitha', 'TeamLeader'에 삽입 삽입 명령이 예외를주는 경우 내가이

SQL 쿼리처럼 가야는 오류가 발생합니다 ,) + 잘못된 구문 ')'

도와주세요. 미리 감사드립니다.

감사 Nilofar

답변

1

오히려 Exception 캐치 가장 구체적인 예외 유형을 잡기보다. SQL Server의 경우 SqlException이됩니다. 이렇게하면 더 자세한 정보에 액세스 할 수 있습니다 (예 : Errors 속성).

가장 파생 된 유형에 필요한 정보가 없으면 직접 추가해야합니다. 예 : 특정 유형을 잡아, 원래의 예외에 InnerException 설정의 자체 예외 유형을 작성한 후이를 버리기 전에 조회를 저장하십시오.

그런 다음 오류를 처리하는 예외 유형을 잡으십시오.

+0

이 http://msdn.microsoft.com/en-us/library/system.data 더 속성을 참조하십시오 .sqlclient.sqlexception_properties.aspx – abatishchev

+0

i = 0 To e.Errors.Count - 1 errorMessages + = "색인 #"& i.ToString() & ControlChars.Cr _ & "메시지 :"& e.Errors (i) .Message & ControlChars.Cr & e.Message _ & "NativeError :"& e.Errors (i) .NativeError & ControlChars.Cr _ & "Source :"& e .Errors (I) .Source 및 ControlChars.Cr _ & "의 SQLState :"& e.Errors (I) .SQLState 및 ControlChars.Cr 다음 내가 내가 사용하고 공급자가 OLEDB ... errorMessages입니다 내가 필요 쿼리도 .. – Nilofar

+0

@ Nilofar : 예외 유형을 식별하고 해당 속성을 확인해야합니다. – Richard

0

리차드가 말하는 것을 확장하여 .NET에서 고유 한 예외 메시지를 작성할 수 있습니다. 예외 메시지 내에 쿼리 문자열을 포함시키고 catch 된 예외를 예외의 InnerException으로 전달할 수 있습니다. 예를 들어 :

Sub DoStuffInToTheDatabase() 
    Dim sql As String 
    Dim dataAccess As New MyDataAccessComponent() 
    Dim dt As DataTable 

    sql = "Select Top 10 * From Orders" 

    Try 
     dt = dataAccess.GetDataTable(sql) 
    Catch ex As Exception 
     Throw New DataException("An exception was thrown with this query: " _ 
      & sql, ex) ' <== You put ex into your new DataException' 
    End Try 
End Sub 

그런 다음 당신은 당신의 오류 로깅 코드에서이 작업을 수행 할 수 있습니다

Sub WriteErrorLog(ex As Exception) 
    Dim errMsg As String 
    errMsg = ex.Message 
    If Not ex.InnerException Is Nothing Then 
     errMsg += " " & ex.InnerException.Message 
    End If 

    '... ' 
End Sub 
+0

그런 다음 sqlquery를 매개 변수로 전달해야합니다. 다음 모듈을 통해 모든 함수에서 나는 또한 sqlquery를 전달해야합니다. 그것은 더 많은 일이 될 것입니다. 정말 고마워요 성실한 노력을 위해 ... 모두 잘 웃음을 유지합니다 :-) – Nilofar

관련 문제