我怎样才能避免这个问题:
无法将值 NULL 插入列“rowguid”,列不允许空值。插入失败。
示例查询是:
insert into tablename (col1, col2, col3)
values('v1', 'v2', 'v3')
听起来您的表是使用 ROWGUIDCOL 创建的,但没有适当的默认值。这是一个来自 ASP.NET 论坛的示例,用于使用该功能进行正确的表定义。它应该会给你一些帮助。
CREATE TABLE Globally_Unique_Data
(guid uniqueidentifier CONSTRAINT Guid_Default DEFAULT NEWSEQUENTIALID() ROWGUIDCOL,
Employee_Name varchar(60)
CONSTRAINT Guid_PK PRIMARY KEY (Guid) );
NEWSEQUENTIALID() 默认会为您生成一个 GUID。没有它,您将不得不生成自己的并将其包含在插入中。您不必像示例中那样将其用作主键,但您必须提供它或使用默认值。
这个问题有两种解决方案。
一种是您可以使列 'rowguid' 允许为空,另一种是设置参数的一些默认值。
在您的代码中,您可以将值设置为
int v1 = 0;
string v2 ="";
然后将这些值传递给查询。
您可以将存储过程中的默认参数值设置为
@v1 int = 0,
@v2 varchar(50) = ' '
按照这个例子:
CREATE TABLE [dbo].[Files](
[id] [int] IDENTITY(1,1) NOT NULL,
[IdFile] [uniqueidentifier] unique ROWGUIDCOL NOT NULL,
[Title] [nvarchar](max) NULL,
[File] [varbinary](max) FILESTREAM NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[id] ASC
))