异常存储过程参数
本文关键字:参数 存储过程 异常 | 更新日期: 2023-09-27 18:14:09
我有这个代码
SqlConnection conn = new SqlConnection(connstring);
SqlCommand cmd = new SqlCommand();
SqlDataAdapter adapter = new SqlDataAdapter();
cmd.CommandType = CommandType.StoredProcedure;
cmd = new SqlCommand("s_SCT_Composition", conn);
SqlParameter param1 = new SqlParameter("@idServ", SqlDbType.Int);
param1.Value = 1002262;
cmd.Parameters.Add(param1);
adapter.SelectCommand = cmd;
try
{
adapter.Fill(tableCompositionNomenclature);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
DataGridNameService.ItemsSource = tableCompositionNomenclature.DefaultView;
出现以下异常
过程或函数需要未指定的参数
存储过程:
ALTER PROCEDURE [dbo].[s_SCT_Composition]
@IdServ Integer
AS
``SELECT CAST (0 as bit) as 'chk', dbo.s_Serv.NameServ as 'NameServNomenc', dbo.rs_Serv.IdServ as 'IdServ', dbo.s_serv.IdServ as 'IdServNomenc'
FROM dbo.rs_Serv INNER JOIN
dbo.rs_ServK ON dbo.rs_Serv.IdServ = dbo.rs_ServK.IdServM INNER JOIN
dbo.s_Serv ON dbo.rs_ServK.IdServN = dbo.s_Serv.IdServ
where dbo.rs_Serv.IdServ = @IdServ;
有什么问题?
此方法在我的代码中创建表:
DataColumn column;
column = new DataColumn();
column.DataType = System.Type.GetType("System.Boolean");
column.ColumnName = "chk";
column.ReadOnly = false;
tableCompositionNomenclature.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "IdServNomenc";
column.ReadOnly = false;
tableCompositionNomenclature.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "NameServNomenc";
column.ReadOnly = true;
tableCompositionNomenclature.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "IdServ";
column.ReadOnly = true;
tableCompositionNomenclature.Columns.Add(column);
//DataGridNameService.ItemsSource = tableCompositionNomenclature.DefaultView;
DataGridNameService.CanUserAddRows = false;
这是我的代码创建表,它可能是中的一个问题
我调试了所有的代码选项始终存在,但异常仍然发生
试图更改参数的名称,结果是相同的
尝试更改传递的参数的类型,结果是相同的
尝试设置两个参数,结果是相同的
方法Fill中可能有错误,它无法接收参数?
cmd.CommandType = CommandType.StoredProcedure;
cmd = new SqlCommand("s_SCT_Composition", conn);
这将失去第一行的效果,因为您创建了一个全新的对象。
试试这个:
cmd = new SqlCommand("s_SCT_Composition", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param1=新的SqlParameter("@idServ",SqlDbType.Int(;
在此语句中,您不应该在参数前面加上@
符号。
此外,确保区分大小写不是问题所在。"idServ"!="IdServ">