我有一个表员工,其中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,列不允许空值
答案 0 :(得分:1)
我没有看到代码有任何问题。我会检查您网页中的连接字符串是否指向同一服务器&数据库,就像插件在查询分析器中工作的那样。您还可以检查员工表上是否有更新另一个表并导致恶作剧的触发器。
答案 1 :(得分:1)
我认为您的SqlCommand对象正在执行与您编写的不同的SQL。使用SQL事件探查器查看实际执行的内容。
此外,您应该使用AddWithValue,或遵循不同的调用模式:Difference with Parameters.Add and Parameters.AddWithValue。这很可能会导致您对Add()调用的影响产生不同的影响。