2011-01-31 4 views
0

DataAdapter1.Update() 메소드를 통해 데이터 세트 dsStaff1에 새 행을 삽입하려고합니다. 내가 생각 SQL Server의 키워드입니다 tblStaff에서 '사용'부울 필드를해야합니까새 행을 삽입 할 때 데이터 세트 업데이트가 실패합니다.

Cannot insert the value NULL into column 'Enabled', table 'dbo.tblStaff'; column does not allow nulls. INSERT fails. The statement has been terminated.

: 나는 다음과 같은 오류를 얻고있다. 기본값은 'True'입니다. 필드의 이름을 정말로 바꿀 수는 없습니다. 해결 방법이 있습니까? 아니면 내가 잘못하고있는거야? 추 신 : sqlcommand 빌더에 의해 insert, update 명령을 생성 중입니다.

답변

1

기본값이있는 경우 SQL 명령 빌더가 NULL (DBNull.Value)을 보내 기본값을 대체해야합니다. 경우에만 기본이 적용됩니다 : 당신이 INSERT에 컬럼에 대한 값을 지정하지 않은 경우

  • 또는 키워드 DEFAULT이 두 형태의

하나를 사용하는 경우 :

업데이트가 추천

파라미터에

--Enabled is not mentioned, will use default 
INSERT (col1, col1) VALUES (col1, col2) 

--Enabled will use DEFAULT 
INSERT (col1, col1, Enabled) VALUES (col1, col2, DEFAULT) 
+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 그래서 어떻게 문제를 해결할 수 있을까요? 삽입 명령에 무엇이 들어 있는지 자동으로 생성되므로 잘 모르겠습니다. Sqlcommand 매개 변수를 사용하여 삽입 명령을 명시 적으로 작성해야합니까? 내 코드를 아래쪽에 붙여 넣었습니다. 업데이트시 실패합니다. – hrishi

0

은 데이터 세트에 대해 고정 된 값을 전달

<asp:Parameter Name="col1" Type="boolean" DefaultValue="true"/> 
0

내 코드 :. 업데이트시 실패합니다. DataAdapter1

에서

 Dim dr As System.Data.DataRow 

     dr = DsStaff1.Tables(0).NewRow() 

     dr.BeginEdit() 
     dr.Item("FirstName") = txtName.Text 
     dr.Item("LastName") = txtSurname.Text 

     dr.Item("StaffID") = txtStaffID.Text 
     dr.Item("Enabled") = cbActive.Checked 
     dr.EndEdit() 
     DsStaff1.Tables(0).Rows.Add(dr) 

     DataAdapter1.Update(DsStaff1) 

또한 내가 사용하고 TableMappings

 DataAdapter1.TableMappings.Add("Table", DsStaff1.Tables("tblStaff").ToString) 

P.S. 업데이트 및 기존 행을 삭제 잘 작동합니다. 새로운 행을 삽입하는 것만으로는 효과가 없습니다.