C# 从sql调用过程
我正在编写winform应用程序,在其中调用datagrid中的过程。 我有一个定义过程参数的方法C# 从sql调用过程,c#,sql,.net,sql-server,stored-procedures,C#,Sql,.net,Sql Server,Stored Procedures,我正在编写winform应用程序,在其中调用datagrid中的过程。 我有一个定义过程参数的方法 public int Add_Nastavenie(out int typNastav, int nastavID, string hod) { ResetParameters(); cmd.CommandText = "add_Nastav"; cmd.CommandType = CommandType.StoredProcedure;
public int Add_Nastavenie(out int typNastav, int nastavID, string hod)
{
ResetParameters();
cmd.CommandText = "add_Nastav";
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter sqlParameter;
var sqlParameterOut = new SqlParameter("@TypNastav", SqlDbType.Int);
sqlParameterOut.Direction = ParameterDirection.Output;
sqlParameter = new SqlParameter("@NastavenieID", SqlDbType.Int);
sqlParameter.Direction = ParameterDirection.Input;
sqlParameter.Value = nastavID;
cmd.Parameters.Add(sqlParameter);
sqlParameter = new SqlParameter("@Hodnota", SqlDbType.NVarChar, 100);
sqlParameter.Direction = ParameterDirection.Input;
sqlParameter.Value = hod;
cmd.Parameters.Add(sqlParameter);
var sqlParameterRet = new SqlParameter("retValue", SqlDbType.Int);
sqlParameterRet.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
typNastav = (int)sqlParameterOut.Value;
return (int)cmd.Parameters["retvalue"].Value;
}
然后我这样叫程序
dataConnector.Add_Nastavenie(typNastav,nastavID,hod);
我有一个错误参数1必须与'out'关键字一起传递
我将其更改为dataConnector.Add_Nastavenie(out typNastav,nastavID,hod)
错误消失,但应用程序不工作,过程不执行任何操作
我的try-catch异常显示:过程或函数“add_-Nastav”需要参数“@TypNastav”,但未提供该参数
有人能帮忙找到解决办法吗?谢谢 您尚未添加存储过程所需的
输出
参数:
cmd.Parameters.Add(sqlParameterOut);
例如:
SqlCommand com = new SqlCommand("update_outptu_Stock", connect.con);
com.CommandType = CommandType.StoredProcedure;
com.Parameters.AddWithValue("@cg_id ", 1);
SqlParameter par = new SqlParameter("@id", SqlDbType.Int)
{
Direction = ParameterDirection.Output
};
SQL:
获取参数id:
var parvalue = id.value;
也许我仍然犯了错误,但我添加了您的代码,现在的错误是:形式参数“@TypNastav”没有声明为输出参数,而是传入请求的输出的实际参数。@user2641465-您需要在存储过程中将@TypNastav作为输出参数。如果不希望将其作为
输出
参数,请将其方向更改为。输入
而不是。输出
返回@typNastav OUTPUTyes它正在工作,但如何修复错误:此sqlParameterCollection不包含参数名为“retvalue”的sql参数。。。。在此dataConnector.Add_Nastavenie(out typNastav,nastavID,hod)。我真的不知道这是第一次使用程序一个应用程序不是我的,我只是重新制作了它。@user2641465-这听起来像是一个新问题。您应该在这里接受一个答案(如果它帮助您解决了最初的问题),然后提出一个关于sqlParameterCollection的新问题。
var parvalue = id.value;