2011-05-06 7 views
0

나는 VB에 익숙하지 않은데, 왜 이것이 작동하지 않는 것인지 모르겠다. 기본적으로 웹 코드에서 저장 프로 시저를 실행하려고한다. sp는 SQL에서 잘 실행되며 여러 번 시도 했으므로 문제가 아닌 것으로 확신합니다. 결과를 반환하고 싶지 않습니다. 실행되면 "ok"문을보고 싶지 않으면 오류 메시지 만보고 싶습니다. lables (경고 및 확인)에 사용하는 코드는 동일한 페이지의 이전 버전에서 재사용됩니다. 유효성 검사 (valUpload)도 마찬가지입니다. 난 당신이 실행하려는 명령은VB.NET에서 저장 프로 시저 호출 문제

db.ExecuteNonQuery(dbCommand) 
입니다
Protected Sub RunValidation_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RunValidation.Click 
    Try 
     Dim bl As New BL.ORG 
     Dim db As Database = DatabaseFactory.CreateDatabase("MyConnection") 
     Dim dbCommand As DbCommand 

     db = DatabaseFactory.CreateDatabase("MyConnection") 
     dbCommand = db.GetStoredProcCommand("Company.dbo.uspMyStoredProcedure") 
     dbCommand.CommandTimeout = 300 
     db.AddInParameter(dbCommand, "ClientID", DbType.String, ddlCompany.SelectedValue) 
     db.AddInParameter(dbCommand, "startPeriod", DbType.String, ddlStartPeriod.SelectedValue) 
     db.ExecuteDataSet(dbCommand) 

     lblWarning.Text = "Please confirm that the <strong>ClientID and startPeriod </strong> are populated in the dropdown list." 
     lblWarning.Visible = True 
     lblConfirmation.Visible = False 

    Catch ex As Exception 
     valUpload.ErrorMessage = "There has been an unexpected error generating the page<br>(" + Err.Description + ")" 
     valUpload.IsValid = False 
    End Try 
End Sub 
+2

해결 방법은 어떤 방식으로 작동하지 않는지 알려주면 간단 해집니다. 오류 메시지가 나타 납니까? 어느 줄 번호? 오류는 무엇을 말합니까? 스택 트레이스 란 무엇입니까? 연결 문자열이 맞습니까? – mellamokb

+0

DbCommand 대신 SqlCommand를 사용하지 않아야합니까? –

+0

잘하면이 질문에 대한 답변을 것입니다 : 1, 내가 볼 수있는 한 저장 프로 시저를 실행하지 않습니다. 아무 결과가 내 테이블에 도착할 때도 (나중에 SQL을 실행할 때 SQL을 잘 채 웁니다.) 2, 오류 메시지가 전혀 표시되지 않습니다. 정상적으로 실행되는 것처럼 보입니다. 그래서 나에게 실망 스럽습니다. 오류 메시지가 표시되지 않는 경우 어디서부터 시작해야할지 몰라하지 마십시오. 나는 페이지를 업로드 할 수 있고 모두 지느러미를 내거나 적어도 잘 돌아가는 것처럼 보입니다. 내가 빠뜨린 다른 정보는 없습니까? –

답변

0

내가 여기 문제가 내가 볼 수있는에서 선

db.ExecuteDataSet(dbCommand) 

생각 ... 해결책은 간단 확신

다음은 예제 사이트입니다. 이 코드는 C#이지만 기본적인 지식을 얻을 수 있다고 생각합니다. 당신이 정말로 필요하다면 당신은 또한 그것에 번역기를 사용할 수 있습니다.

http://msdn.microsoft.com/en-us/magazine/cc188702.aspx#S2

0

나는이 비슷한에 다시 것 :

Protected Sub RunValidation_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RunValidation.Click 
    Using cnn As New SqlClient.SqlConnection("MyConnection") 
    cnn.Open() 

    Using cmd As New SqlClient.SqlCommand("Company.dbo.uspMyStoredProcedure", cnn) 
     cmd.CommandTimeout = 30 
     cmd.Parameters.Add(New SqlClient.SqlParameter("ClientID", SqlDbType.NVarChar, 50) With {.Value = ddlCompany.SelectedValue}) 
     cmd.Parameters.Add(New SqlClient.SqlParameter("startPeriod", SqlDbType.NVarChar, 50) With {.Value = ddlStartPeriod.SelectedValue}) 

     Try 
     cmd.ExecuteNonQuery() 
     Catch ex As Exception 
     valUpload.ErrorMessage = "There has been an unexpected error generating the page<br>(" + Err.Description + ")" 
     valUpload.IsValid = False 
     End Try 

     lblWarning.Text = "Please confirm that the <strong>ClientID and startPeriod </strong> are populated in the dropdown list." 
     lblWarning.Visible = True 
     lblConfirmation.Visible = False 

    End Using 
    End Using 
End Sub 

몇 가지 참고 사항 : 가능한 한

  • 랩 적은 코드를 시도 - 캐치에. 이 경우, 데이터베이스 만이 우려의 원인이되어야합니다 (입력 내용의 유효성을 인정함).
  • using statement은 문제가 발생할 경우 연결과 명령 객체를 매우 깔끔하게 처리합니다.
  • 데이터베이스 호출 섹션을 별도의 함수/하위에 보관하고 다른 위치에 레이블 및 UI 메시지를 설정하여 코드를 더 리팩토링하는 것이 좋습니다.
관련 문제