0

我在数据库中有一个标识列,它是主键并自行增加其值。但我在 asp.net ado.net 类中有一个插入查询,如下所示:

cmd = new SqlCommand("insert into Images(Name,[Image]) VALUES ('Nature',@img)", conn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = TextBox1.Text;
cmd.Parameters.Add("@img", SqlDbType.Image).Value = img;
cmd.ExecuteNonQuery();

但是,它向我抛出了异常,它不能为空。

我的想法/目标是,我只想插入上述两个值,并且主键列应该在 DB 内部自行递增。我已经在数据库中配置了它。但是我不知道如何处理此错误或调整此代码。请帮忙

4

2 回答 2

0

确保表上的IDImages是标识列。

例如:

CREATE TABLE Images(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](100) NOT NULL,
    [Image] [image] NOT NULL)

如果是,则单步执行您的代码并确保您使用的参数不为空; TextBox1.Textimg

最后,确保表上没有其他不可为空的列。

于 2012-08-25T13:45:23.260 回答
0

我认为您没有在查询中提供@Name 参数,但是您在参数中发送值。

请删除“自然”值并输入@Name。

cmd = new SqlCommand("insert into Images(Name,[Image]) VALUES (@Name ,@img)", conn); cmd.CommandType = CommandType.Text; 
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = TextBox1.Text; 
cmd.Parameters.Add("@img", SqlDbType.Image).Value = img; 
cmd.ExecuteNonQuery(); 
于 2012-08-25T13:49:19.513 回答