Asp.net 尝试插入到vb.net应用程序时出错
我的数据库中有ModifyUser和ModifyDate列,它们应该显示最后一个以某种方式更新特定产品的人的用户名、日期和时间 我想,如果我只是添加了第二个查询,那么我就可以了,但出于某种原因,应用程序也想将ProductName添加到产品表中。为什么应用程序不直接在产品表insert中插入我告诉它要插入的2个值Asp.net 尝试插入到vb.net应用程序时出错,asp.net,sql,vb.net,insert,Asp.net,Sql,Vb.net,Insert,我的数据库中有ModifyUser和ModifyDate列,它们应该显示最后一个以某种方式更新特定产品的人的用户名、日期和时间 我想,如果我只是添加了第二个查询,那么我就可以了,但出于某种原因,应用程序也想将ProductName添加到产品表中。为什么应用程序不直接在产品表insert中插入我告诉它要插入的2个值 Error message: Cannot insert the value NULL into column 'ProductName', table 'Products.dbo.P
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
列已定义为notnull
这意味着您必须为它提供一个值。这可以确保您没有没有没有名称的产品
由于您在此查询中未提供ProductName
:
INSERT INTO Product (ModifyDate, ModifyUser)
VALUES (getdate(), @ModifyUser)
声明失败了
我希望在同一个表中还有其他
非空
列。看起来产品
表的产品
列已定义为非空
这意味着您必须为它提供一个值。这可以确保您没有没有没有名称的产品
由于您在此查询中未提供ProductName
:
INSERT INTO Product (ModifyDate, ModifyUser)
VALUES (getdate(), @ModifyUser)
声明失败了
我希望在同一个表中还有其他
非空
列。错误消息非常清楚:您没有提供ProductName
,这是一个必填(非空
)字段
要修复它,您必须提供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
,这是一个必填(notnull
)字段
要修复它,您必须提供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列ProductName nvarchar(50)NULLProductName不接受NULL。您必须传入ProductName或更改column属性以接受空值,如下所示 改变表产品
ALTER列ProductName nvarchar(50)NULL如果“产品”表中的“产品名称”字段设置为非NULL,则数据库不会接受产品表中的任何记录,除非这些记录包含“产品名称”字段的值 如果“Product”表中的“ProductName”字段设置为非NULL,则数据库将不接受产品表中的任何记录,除非这些记录包含“ProductName”字段的值 说得好,我意识到我不想添加新产品,我想更改现有产品的一些信息。大脑放屁-我需要使用更新语句。我在更新语句中使用了它。谢谢你的帮助。说得好,我意识到我不想添加新产品,我想更改现有产品的一些信息。大脑放屁-我需要使用更新语句。我在更新语句中使用了它。谢谢你的帮助。