I got the same error..Please help me to sort out...
The SqlParameterCollection only accepts non-null SqlParameter type objects.
Parameter name: value
//Business Layer
namespace ShoppingCart.BussinessLayer
{
public class BussinessClass
{
public string CategoryName;
public int CategoryId;
public void AddNewCategory()
{
SqlParameter[] parameter = new SqlParameter[1];
parameter[0] = DataLayer.DataClass.AddParameter("@CategoryName", CategoryName, System.Data.SqlDbType.VarChar, 200);
DataTable dt = DataLayer.DataClass.ExcecuteDTByProcedure("spAddNewCategory", parameter);
}
}
}
//Data layer
namespace ShoppingCart.DataLayer
{
public class DataClass
{
public DataClass()
{
}
public static string ConnectionString
{
get
{
return ConfigurationManager.ConnectionStrings["ShoppingkartConnectionString"].ConnectionString.ToString();
}
}
public static SqlParameter AddParameter(string parametername, Object value, SqlDbType Type, int size)
{
SqlParameter param=new SqlParameter();
param.ParameterName = parametername;
param.Value = value.ToString();
param.SqlDbType = Type;
param.Size = size;
param.Direction = ParameterDirection.Input;
return param;
}
public static DataTable ExcecuteDTByProcedure(string ProcedureName, SqlParameter[] parameter)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = ProcedureName;
if (parameter != null)
cmd.Parameters.AddRange(parameter);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter adp = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
try
{
adp.Fill(dt);
}
catch (Exception ex)
{
}
finally
{
adp.Dispose();
cmd.Parameters.Clear();
cmd.Dispose();
conn.Dispose();
}
return (dt);
}
}