将存储过程参数添加到sqlDataSource,msSQL中

时间:2012-04-25 19:51:56

标签: c# sql-server stored-procedures sqldatasource

我想在mssql中使用存储过程插入一个值。这是我的存储过程:

ALTER PROCEDURE dbo.insertNewMember 
(@name varchar(30), 
@age int )
AS
BEGIN 
    INSERT INTO member(memId, name, age) VALUES ('', @name, @age);
END 

我的C#代码,使用此程序:

addStaffSql.InsertCommand = "insertNewMember";
addStaffSql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
addStaffSql.InsertParameters.Add("@name", name);
addStaffSql.InsertParameters.Add("@age", age);
addStaffSql.Insert();

但是当我运行程序时出现以下错误:

Procedure or function 'insertNewMember' expects parameter '@name', which was not supplied.

如果您有任何想法,我将不胜感激。

2 个答案:

答案 0 :(得分:3)

尝试在Add()方法中丢失“@”符号。

addStaffSql.InsertCommand = "insertNewMember";
addStaffSql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
addStaffSql.InsertParameters.Add("name", name);
addStaffSql.InsertParameters.Add("age", age);
addStaffSql.Insert();

答案 1 :(得分:0)

我猜你在名为name的变量中传递 null 。您可能想要更改代码。

if(name!=null)
{
   addStaffSql.InsertCommand = "insertNewMember";
   addStaffSql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
   addStaffSql.InsertParameters.Add("@name", name);
   addStaffSql.InsertParameters.Add("@age", age);
   addStaffSql.Insert();
}
else
{
  //Send message back to user that name is not filled properly !
}