c#传递存储过程名,连接sqlserver数据库,执行查询操作,返回datatable

时间:2021-03-02 14:01:17
public DataTable waitDao(string procName, SqlParameter[] myPar)
其中procName是我要传递的存储过程名,myPar是存放存储过程需要的参数
具体内部怎样写?
我写的
 public DataTable waitDao(string procName, SqlParameter[] myPar)
        { string ConnString = ConfigurationManager.AppSettings["StrCon"];
          using (SqlConnection conn = new SqlConnection(ConnString))
            { DataSet ds = new DataSet();
                try
                {  conn.Open();
                    SqlCommand cmd = new SqlCommand(procName, conn);
                    cmd.CommandType = CommandType.StoredProcedure;
                    if (myPar != null)
                    {
                        foreach (SqlParameter spar in myPar)
                        { cmd.Parameters.Add(spar);
                        }
                    }
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(ds, "ds");
                }
                catch (System.Data.SqlClient.SqlException ex)
                { throw new Exception(ex.Message);
                }
                return ds.Tables[0];
            }
        }但是显示错误:存储过程需要的参数没传进来

5 个解决方案

#1


up up  up up up up up up up up

#2


 up up up up up up up up up

#3


 up up up up up up up

#4


检查参数个数,数据值设置

#5


参数个数和类型都要和数据库对应上。

            SqlParameter[] sp = new SqlParameter[] 
            {
                new SqlParameter("@parameterName1","value1"),
                new SqlParameter("@parameterName2","value2"),
                new SqlParameter("@parameterName3","value3"),
                new SqlParameter("@parameterName4","value4")
            };

#1


up up  up up up up up up up up

#2


 up up up up up up up up up

#3


 up up up up up up up

#4


检查参数个数,数据值设置

#5


参数个数和类型都要和数据库对应上。

            SqlParameter[] sp = new SqlParameter[] 
            {
                new SqlParameter("@parameterName1","value1"),
                new SqlParameter("@parameterName2","value2"),
                new SqlParameter("@parameterName3","value3"),
                new SqlParameter("@parameterName4","value4")
            };