功能或存储过程有太多参数 [英] Funcation or Store Procedure Has too many arguments
问题描述
Hello My SP
ALTER PROCEDURE InsertData
(
@ firstName varchar ( 50 ),
@ lastName varchar ( 50 ),
@ year varchar ( 50 ),
@ school varchar ( 50 ),
@ city varchar ( 50 ),
@ state varchar ( 50 ),
@ country varchar ( 50 ),
@ e_mail varchar ( 50 ),
@ mobile varchar ( 50 )
)
AS
/ * SET NOCOUNT ON * /
DECLARE @ Count int
选择 @ Count =计数(PersonID)来自 Person WHERE Mobile = @ mobile
IF @ Count = 0
BEGIN
INSERT INTO Person(FirstName,LastName, Year1,School,City,State,Country,E_mail,Mobile)
VALUES
( @ firstName , @ lastName , @ year , @学校, @ city , @ state , @country , @ e_mail , @ mobile )
END
RETURN @ Count
< span class =code-keyword> RETURN
我的DAL.cs文件
public int Ins ert(人员)
{
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand dCmd = new SqlCommand( InsertData ,conn);
dCmd.CommandType = CommandType.StoredProcedure;
尝试
{
// dCmd.Parameters.AddWithValue(@ firstName,person.FirstName);
dCmd.Parameters.AddWithValue( @ firstName,person.FirstName);
dCmd.Parameters.AddWithValue( @ lastName,person.LastName);
dCmd.Parameters.AddWithValue( @ year,person.Year1);
dCmd.Parameters.AddWithValue( @ school,person.School);
dCmd.Parameters.AddWithValue( @ city,person.City);
dCmd.Parameters.AddWithValue( @ state,person.State);
dCmd.Parameters.AddWithValue( @ country,person.Country);
dCmd.Parameters.AddWithValue( @ e_mail,person.E_mail);
dCmd.Parameters.AddWithValue( @ mobile,person.Mobile);
return dCmd.ExecuteNonQuery();
}
catch
{
throw ;
}
最后
{
dCmd.Dispose();
conn.Close();
conn.Dispose();
}
}
任何人都可以告诉我解决方案吗?
以这种方式更改您的SP:
ALTER PROCEDURE InsertData
(
@ firstName varchar ( 50 ),
@ lastName varchar ( 50 ),
@ year varchar ( 50 ),
@ school varchar ( 50 ),
@ city varchar ( 50 ),
@sta te varchar ( 50 ),
@country varchar ( 50 ),
@ e_mail varchar ( 50 ),
@ mobile varchar ( 50 )
)
AS
BEGIN
IF EXISTS ( SELECT PersonID FROM Person WHERE Mobile = @ mobile )
BEGIN
- 选择PersonId
SELECT PersonID FROM 人 WHERE Mobile = @ mobile
END
ELSE
BEGIN
INSERT INTO 人(FirstName,LastName,Year1,School,City,State,Country,E_mail,Mobile) VALUES ( @ firstName , @ lastName , @ year , @ school , @ city , @ state , @ country , @ e_mail , @ mobile )
- 返回新的PersonID
RETURN @@ IDENTITY
END
结束
你好
最后我得到了这个问题的解决方案,我正在使用Web应用程序项目,所以没有App_Code Foder,
引用:,对于Web App Projects,你应该添加一个名为'CodeFolder'的文件夹,然后在那里添加你的类。然后右键单击该类文件的属性并将其构建配置设置为编译而不是内容。
我这样做了&得到我的问题的答案。
http://stackoverflow.com/questions/2277742/app-code-folder-is-missing-in-vs-2010 [< a href =http://stackoverflow.com/questions/2277742/app-code-folder-is-missing-in-vs-2010target =_ blanktitle =New Window> ^ ]
Hello My SP
ALTER PROCEDURE InsertData
(
@firstName varchar(50),
@lastName varchar(50),
@year varchar(50),
@school varchar(50),
@city varchar(50),
@state varchar(50),
@country varchar(50),
@e_mail varchar(50),
@mobile varchar(50)
)
AS
/* SET NOCOUNT ON */
DECLARE @Count int
select @Count = Count(PersonID) from Person WHERE Mobile = @mobile
IF @Count = 0
BEGIN
INSERT INTO Person (FirstName, LastName, Year1,School,City,State,Country,E_mail,Mobile)
VALUES
(@firstName, @lastName,@year,@school,@city,@state,@country,@e_mail,@mobile)
END
RETURN @Count
RETURN
My DAL.cs file
public int Insert(Person person)
{
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand dCmd = new SqlCommand("InsertData", conn);
dCmd.CommandType = CommandType.StoredProcedure;
try
{
// dCmd.Parameters.AddWithValue("@firstName", person.FirstName);
dCmd.Parameters.AddWithValue("@firstName", person.FirstName);
dCmd.Parameters.AddWithValue("@lastName", person.LastName);
dCmd.Parameters.AddWithValue("@year", person.Year1);
dCmd.Parameters.AddWithValue("@school", person.School);
dCmd.Parameters.AddWithValue("@city", person.City);
dCmd.Parameters.AddWithValue("@state", person.State);
dCmd.Parameters.AddWithValue("@country", person.Country);
dCmd.Parameters.AddWithValue("@e_mail", person.E_mail);
dCmd.Parameters.AddWithValue("@mobile", person.Mobile);
return dCmd.ExecuteNonQuery();
}
catch
{
throw;
}
finally
{
dCmd.Dispose();
conn.Close();
conn.Dispose();
}
}
Can any one tell me the Solution?
Change your SP in that way:
ALTER PROCEDURE InsertData ( @firstName varchar(50), @lastName varchar(50), @year varchar(50), @school varchar(50), @city varchar(50), @state varchar(50), @country varchar(50), @e_mail varchar(50), @mobile varchar(50) ) AS BEGIN IF EXISTS(SELECT PersonID FROM Person WHERE Mobile = @mobile) BEGIN --select PersonId SELECT PersonID FROM Person WHERE Mobile = @mobile END ELSE BEGIN INSERT INTO Person (FirstName, LastName, Year1,School,City,State,Country,E_mail,Mobile) VALUES (@firstName, @lastName,@year,@school,@city,@state,@country,@e_mail,@mobile) --return new PersonID RETURN @@IDENTITY END END
Hello
Finally I got Solution of this Problem, I am using web Application Project, So there is no App_Code Foder,
Quote:, for Web App Projects, you should instead Add a folder called something like 'CodeFolder' and then add you class in there. Then right click properties on that class file and set its build config to compile rather than content.
I did this & Get answer of my problem.
http://stackoverflow.com/questions/2277742/app-code-folder-is-missing-in-vs-2010[^]
这篇关于功能或存储过程有太多参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!