如何用不同的参数在C#中执行存储过程?

时间:2015-03-09 12:36:19

标签: c# sql sql-server asp.net-mvc stored-procedures

 using (SqlConnection conn = new SqlConnection(connection))
 {
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            conn.Open();

            cmd.CommandText = StoredProcedure;
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            foreach (var item in reportParams)
            {
                cmd.Parameters.Add(new SqlParameter("@" + item.ParameterName,  item.FieldValue ));
            }

            da.SelectCommand = cmd;
            da.Fill(ds);
            conn.Close();
}

但是如果我改变了

,这就失败了
 cmd.Parameters.Add(new SqlParameter("@" + item.ParameterName, "'" item.FieldValue"'" ));

然后失败的条件通过,工作的事情不会过去。

使用或不使用“'”的任何参数值执行存储过程的正确方法是什么?

条件失败时,我在da.Fill(ds);收到错误

1 个答案:

答案 0 :(得分:0)

public void ExecutePRC(string userId,ref string RetMsg)         {             尝试             {

            string RetVal="";
            SqlCommand cmd= new SqlCommand("ProcedureName",ConnectionObject);
            cmd.CommandType=CommandType.StoredProcedure;
            cmd.Parameters.Add("@USER_ID",SqlDbType.Int);

            SqlParameter outParameter = new SqlParameter("@RETVAL",SqlDbType.VarChar,10);
            outParameter.Direction = ParameterDirection.Output; 
            cmd.Parameters.Add(outParameter);   

            outParameter = new SqlParameter("@RETMSG",SqlDbType.VarChar,255);
            outParameter.Direction = ParameterDirection.Output; 
            cmd.Parameters.Add(outParameter);

            // assign Value to parameter userId
            cmd.Parameters["@USER_ID"].Value=userId;

            cmd.ExecuteNonQuery();
            RetVal = cmd.Parameters["@RETVAL"].Value.ToString();
            RetMsg = cmd.Parameters["@RETMSG"].Value.ToString();

        }
        catch(Exception ex)
        {

            //Use Ex.Message Exception
        }

    }

// InputParameter UserId(Int) // OutputParameter REtVAL,RETMSG(varchar)