2013-11-01 4 views
0

정보가 편집 된 SQL에서 가져온 양식이 있습니다. 일단 양식이 닫히면 데이터베이스에 변경 사항을 다시 쓰거나 버리길 원합니다. 비교를 위해 두 세트의 데이터를 저장하고 싶지 않으며 SQL에 대해 다시 쿼리하지 않으려합니다.SqlCommands 집합을 저장하고 vb.net에서 폼에 닫거나 적용하지 않으면 어떻게됩니까?

나는 변경 그러나 저장 될 경우 SqlCommand를 항목의 목록을 작성하고이를 처리하는 아이디어를 내놓았다 I 목록에있는 SqlCommand를 추가하려고 다음과 같은 오류 얻을 :

처리되지 않은를 'System.NullReferenceException'형식의 예외가 Application1.exe에서 발생했습니다.

추가 정보 : 개체 참조가 개체의 인스턴스로 설정되지 않았습니다.

나는 정말 간단한 것을 놓쳤을 지 모르지만 나는 스스로를 볼 수 없습니다.

내 코드는 다음과 같습니다 :

Public Class frm1 
    Public Property ContID As String 
    Dim PendingSQLChanges As List(Of SqlCommand) 

Private Sub btnAddTel_Click(sender As Object, e As EventArgs) Handles btnAddTel.Click 
     Using x As New SqlCommand("INSERT into ContactTels (Tel, CoID) Values (@NewValue, @ContID) ;--", cnn) 
      x.Parameters.Add("@NewValue", SqlDbType.NVarChar, 100).Value = strNewvalue 
      x.Parameters.Add("@ContID", SqlDbType.Int).Value = ContID 
      PendingSQLChanges.Add(x) <This is the line I get the error on. 
      btnSave.Enabled = True 
     End Using 
End Sub 

당신은 내가 그렇지 않으면 내가 SQLCommand.Commandtext을 포함하는 문자열의 목록을 사용하는 것 그 이상 사용하는 SqlCommand에 매개 변수를 추가하고 볼 수 있듯이.

내가 저장된 명령을 처리하는 데 사용하는 코드는 작업 목록을 얻을 수있는 경우 :

 For x = 0 To PendingSQLChanges.Count - 1 
      PendingSQLChanges(x).ExecuteNonQuery() 
     Next 

가 올바른뿐만 아니라인가?

+0

using 문은 SqlCommand "x"개체를 삭제합니다. using 문을 제거하십시오. – lex87

+0

더 복잡한 시나리오 에서처럼 for 루프에서 여러 SQLCommands를 만들고 싶습니다. x가 PendingSQLChanges에 전달되면 '복사'되고 원본의 처리가 아무런 영향을 미치지 않는다고 잘못 생각합니까? – LostRob

+0

Dim을 사용하여 바꾸기를 시도했지만 여전히 SQLCommand를 목록에 추가하는 것과 같은 오류가 발생합니다. – LostRob

답변

2

당신의 List(of SqlCommand) 선언에 New을 사용해보십시오 :

Dim PendingSQLChanges As New List(Of SqlCommand) 

그것은 따라서 Null Reference 인스턴스화되지 않았습니다.