Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异常存储过程参数_C#_Sql Server_Wpf_Ado.net - Fatal编程技术网

C# 异常存储过程参数

C# 异常存储过程参数,c#,sql-server,wpf,ado.net,C#,Sql Server,Wpf,Ado.net,我有这个密码 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

我有这个密码

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;
有什么问题吗

此方法在我的代码中创建表:

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;
这是我的代码创建表,它可能是一个问题

我调试了所有代码选项始终存在,但异常仍然发生

尝试更改参数的名称,结果相同

尝试更改传递参数的类型,结果相同

尝试设置两个参数,结果相同

可能是填充方法出错,无法接收参数

SqlParameter param1=新的SqlParameter(“@idServ”,SqlDbType.Int)

在此语句中,不应在参数前面加上
@
符号

另外,确保不存在区分大小写的问题。“idServ”!=“IdServ”

这将丢失第一行的效果,因为您创建了一个完整的新对象

请尝试以下方法:

cmd = new SqlCommand("s_SCT_Composition", conn);
cmd.CommandType = CommandType.StoredProcedure;

粘贴完整的异常堆栈跟踪。另外,请添加s_SCT_组合定义SQLwhere dbo.rs_Serv.IdServ=@IdServ it无助于确保sql参数不区分大小写。您正在将idServe推入IdServeI check区分大小写,它没有帮助我检查区分大小写,它没有帮助您是否也尝试删除上述语句中的
@
?我删除前缀,它没有帮助