存储过程没有参数,并且提供了参数
本文关键字:参数 存储过程 | 更新日期: 2023-09-27 18:26:50
我有一个函数,它将从数据库中获取记录。
public List<Issue> Load_Issues()
{
SqlDataReader Sdr;
List<Issue> ObjList = new List<Issue>();
cmd.CommandText = "Get_All_Issue";
try
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
Sdr = cmd.ExecuteReader();
while (Sdr.Read())
{
// here I pull out records from database..
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
}
return ObjList;
}
我用来绑定Gridview的函数如下
public void Bind_Issues()
{
gdIssues.DataSource = Bl.Load_Issues()();
gdIssues.DataBind();
}
我的存储过程不接受任何参数。当页面第一次加载时,它运行良好,并将记录绑定到网格视图。
我们也可以选择编辑记录,所以在更新记录后,我需要再次将记录绑定到gridview。所以我再次使用我的Load_Issues
函数来做这件事。但这次它抛出了错误
Get_All_Issues没有参数,并且提供了参数
您很可能在多个位置重新使用cmd
实例,并且没有清除与它相关的参数,从而创建您看到的异常。
最简单的解决方案是不重复使用cmd
,但如果出于任何原因,它对您更好,只需确保在执行之前使用Clear on参数即可。
cmd.Parameters.Clear();
尽量不要使用全局连接、命令等:在方法中打开和关闭它们
public List<Issue> Load_Issues() {
//TODO: Put actual connection string here
using (SqlConnection con = new SqlConnection("Connection String here")) {
con.Open();
// Put IDisposable into using
using (SqlCommand cmd = new SqlCommand()) {
cmd.Connection = con;
cmd.CommandText = "Get_All_Issue";
cmd.CommandType = CommandType.StoredProcedure;
List<Issue> ObjList = new List<Issue>();
// Put IDisposable into using
using (var Sdr = cmd.ExecuteReader()) {
while (Sdr.Read()) {
//TODO: Pull out records from database into ObjList
}
}
return ObjList;
}
}
}
试试这些
exec 'stored_procedure_name'
go
或
alter proc stored_procedure_name
as
begin
--Block of Statements
end
go
或
create proc stored_procedure_name
as
begin
--Block of Statements
end
go
go关键字将解决您的问题。