无法将NULL值插入到定义为自动增量的SQL表列中

时间:2014-08-14 16:28:04

标签: c# sql asp.net sql-server tsql

我有一个表员工,其中id被定义为自动增量

模式:

employee(id, name, company, salary, age)

insert into employee(name, company, salary, age) 
values('John', 'ABC', 90000, 30);

这很有效。但是,当通过asp.net做同样的事情时

SqlConnection xconn = new SqlConnection();
xconn.ConnectionString = @"";  //connection details go here
xconn.Open()

String query = "insert into employee(name, company, salary, age) values(@name, @company, @salary, @age)";
SqlCommand ycmd = new SqlCommand(query, xconn);
ycmd.Parameters.Add("@name", name);
ycmd.Parameters.Add("@company", company);
ycmd.Parameters.Add("@salary", salary);
ycmd.Parameters.Add("@age", age);
ycmd.ExecuteNonQuery();

此处name, company, salary, age包含各自的值。

我得到了一个例外

  

无法将值NULL插入列ID,列不允许空值

2 个答案:

答案 0 :(得分:1)

我没有看到代码有任何问题。我会检查您网页中的连接字符串是否指向同一服务器&数据库,就像插件在查询分析器中工作的那样。您还可以检查员工表上是否有更新另一个表并导致恶作剧的触发器。

答案 1 :(得分:1)

我认为您的SqlCommand对象正在执行与您编写的不同的SQL。使用SQL事件探查器查看实际执行的内容。

此外,您应该使用AddWithValue,或遵循不同的调用模式:Difference with Parameters.Add and Parameters.AddWithValue。这很可能会导致您对Add()调用的影响产生不同的影响。