【发布时间】:2014-10-08 09:36:39
【问题描述】:
我有一个员工表,其中 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,列不允许空值
【问题讨论】:
-
是的。但它是自动递增的。那么为什么在未指定时会抛出错误。我通过 sql 控制台做了同样的事情,效果很好。
-
这可能与您当前遇到的问题无关,但请始终尝试对您的
SqlConnection和SqlCommand对象使用using语句,以便适当释放这些对象占用的资源。 -
一般说明,我不确定这是否会导致它,但您应该使用
Parameter.AddWithValue,因为Parameter.Add已弃用。同样正如@DennisR 所说,您应该使用using语句。 -
这里可能有问题,但 Parameter.Add() 看起来不正确。第二个参数应该是数据类型。 Refer to
-
我只是在这里检查...您的意思是自动递增,IDENTITY (1,1) 紧吗?另外,您可以右键单击表格并生成一个 CREATE 脚本然后将其粘贴到这里吗?
标签: c# sql asp.net sql-server tsql