簡體   English   中英

嘗試插入vb.net應用程序時出錯

[英]Error when trying to INSERT INTO vb.net app

我的數據庫中有名為ModifyUser和ModifyDate的列,這些列應顯示以某種方式更新了特定產品的最后一個用戶的用戶名以及日期和時間。

我以為如果我只添加第二個查詢,那會很好,但是由於某種原因,應用程序也希望將ProductName添加到Product表中。 為什么應用程序不只是插入我告訴它要插入到Product表INSERT中的2個值?

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()

看起來Product表的ProductName列已定義為NOT NULL

這意味着您必須為其提供價值。 這樣可以確保您沒有沒有名字的產品。

由於您沒有在此查詢中提供ProductName

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

該語句失敗。

我希望同一張表上還有其他NOT NULL列。

錯誤消息非常清楚:您沒有提供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

記住要提供查詢的所有參數值。

產品中的ProductName不接受null。 您要么必須傳遞ProductName,要么將column屬性更改為接受空值,如下所示

ALTER TABLE產品ALTER COLUMN產品名稱nvarchar(50)NULL

如果“產品”表中的“產品名稱”字段設置為“非空”,則數據庫將不接受產品表中的任何記錄,除非它們包含“產品名稱”字段的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM