2011-10-21 3 views
0

내 데이터베이스에 ModifyUser 및 ModifyDate라는 열이있어 특정 제품을 어떻게 든 최근에 업데이트 한 사람의 사용자 이름과 날짜 및 시간을 표시합니다.삽입 INTO vb.net 응용 프로그램을 시도 할 때 오류가 발생했습니다

방금 ​​두 번째 쿼리를 추가 한 다음 응용 프로그램이 제품 테이블에 ProductName을 추가하려는 이유가 무엇인지 생각했습니다. 왜 응용 프로그램이 INSERT라는 Product 테이블에 삽입하도록 지시 한 2 개의 값을 삽입하지 않는 것입니까? Product 테이블 ProductNameNOT NULL 정의 된 것처럼

Error message: Cannot insert the value NULL into column 'ProductName', table 
'Products.dbo.Product'; column does not allow nulls. INSERT fails. 
The statement has been terminated. 

'SQL INSERT: CompanyLink Table 
     Dim strSQL As String = "INSERT INTO CompanyLink (ProductID, CompanyID) 
     VALUES (@ProductID, @CompanyID);INSERT INTO Product (ModifyDate, ModifyUser) 
     VALUES (getdate(), @ModifyUser)" 

    Using cn As New SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("LocalSqlServer").ConnectionString) 

    Using cmd As New SqlCommand(strSQL, cn) 

    cmd.Parameters.Add(New SqlParameter("@ProductID", ProductID.Value)) 
    cmd.Parameters.Add(New SqlParameter("@CompanyID", company.Value)) 
    cmd.Parameters.Add(New SqlParameter("@ModifyUser", 
    System.Web.HttpContext.Current.User.Identity.Name)) 

    cn.Open() 
    cmd.ExecuteNonQuery() 

답변

1

오류 메시지는 매우 분명합니다. 사용자가 ProductName (필수) 필드 (NOT NULL)를 제공하고 있지 않습니다. 그것을 해결하기 위해

,이 수정의 ProductName를 제공해야합니다 :

INSERT INTO Product (ModifyDate, ModifyUser, ProductName) 
    VALUES (getdate(), @ModifyUser, @ProductName) 

을이 추가

cmd.Parameters.Add(New SqlParameter("@ProductName", SomeVariableContainingProductName)) 

업데이트를 당신이 정말로 필요하기 때문에

귀하의 진술은 다음과 같습니다 :

Update product 
set ModifyDate = getdate(), 
    ModifyUser = @ModifyUser 
where ProductID = @ProductID 

쿼리에 대한 모든 매개 변수 값을 제공해야합니다.

+0

좋은 점은 새 제품을 추가하고 싶지 않다는 것입니다. 기존 제품에 대한 정보를 변경하고 싶습니다. 두뇌 방구 - 나는 UPDATE 문을 사용해야한다. – jlg

+0

정확히 내 UPDATE 문에 사용했습니다. 도와 주셔서 감사합니다. – jlg

2

보인다.

즉, 에는 값이 있습니다. 이렇게하면 이름이없는 제품이 없는지 확인할 수 있습니다.

이 쿼리에서 ProductName을 제공하지 않기 때문에 :

INSERT INTO Product (ModifyDate, ModifyUser) 
    VALUES (getdate(), @ModifyUser) 

문이 실패합니다.

동일한 테이블에 다른 NOT NULL 열이있을 것으로 예상합니다.

0

제품의 ProductName은 null을 허용하지 않습니다. 당신은 제품 이름에 전달하거나

ALTER 표 제품 ALTER COLUMN의 제품 이름의 NVARCHAR (50) NULL

0

아래와 같이 null 값을 허용하도록 열 속성을 변경해야 할 것 중 하나 만약 '제품'에서 '제품 이름'필드 테이블이 NOT NULL로 설정되면 데이터베이스는 'ProductName'필드 값을 포함하지 않으면 Product 테이블에 레코드를 허용하지 않습니다.

관련 문제