将存储过程参数添加到sqlDataSource中,msSQL
问题描述:
我想通过在mssql中使用存储过程来插入值。这是我的存储过程:将存储过程参数添加到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.
如果您有任何想法,我会感激。
答
尝试在Add()方法中丢失“@”符号。
addStaffSql.InsertCommand = "insertNewMember";
addStaffSql.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
addStaffSql.InsertParameters.Add("name", name);
addStaffSql.InsertParameters.Add("age", age);
addStaffSql.Insert();
答
我想你会在名为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 !
}
+0
我检查所有变量。如果我使用这个查询:“addStaffSql.InsertCommand =”INSERT INTO成员(名称,年龄)VALUES('“+ name +”','“+ age +”')“;”,它被成功评估。但我需要使用存储过程来完成,但我还没有成功。 – Shnkc 2012-04-25 20:08:43
由于此解决方案,此错误消息给出:“字符串或二进制数据将被截断。语句已终止。” – Shnkc 2012-04-27 13:57:20
@Shnkc你的SP显示“name”的数据类型是varchar(30),这可能是导致问题的原因。检查您传递给过程的字符串的长度。 – Jason 2012-04-27 14:07:42
好吧,我明白了。然后,问题就解决了 – Shnkc 2012-04-27 14:58:20