может Кто-нибудь помочь мне исправить этот код ..
public static DataTable getCompartmentList(int module, string compID, string compDesc, string compType, string equipMake, string equipModel, string compMake, int compSize)
{
string cnnString = System.Configuration.ConfigurationManager.ConnectionStrings["TTDALConnection"].ConnectionString;
DataTable dt = null;
try
{
SqlConnection cnn = new SqlConnection(cnnString);
SqlCommand cmd = new SqlCommand("spGetCompartmentsList", cnn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "spGetCompartmentsList";
cmd.Parameters.Add(new SqlParameter("@progid", module));
cmd.Parameters.Add(new SqlParameter("@compId", (object)compID ?? DBNull.Value));
cmd.Parameters.Add(new SqlParameter("@compDesc", (object)compDesc ?? DBNull.Value));
cmd.Parameters.Add(new SqlParameter("@compType", (object)compType ?? DBNull.Value));
cmd.Parameters.Add(new SqlParameter("@equipMake", (object)equipMake ?? DBNull.Value));
cmd.Parameters.Add(new SqlParameter("@equipModel", (object)equipModel ?? DBNull.Value));
cmd.Parameters.Add(new SqlParameter("@compMake", (object)compMake ?? DBNull.Value));
cmd.Parameters.Add(new SqlParameter("@compSize", (object)compSize ?? DBNull.Value));
cnn.Open();
SqlDataReader dr = cmd.ExecuteReader();
dt.Load(dr);
return dt;
}
catch
{
throw;
}
}
Я изменил этот код для обработки исключения нулевой ссылки.
cmd.Parameters.Add(new SqlParameter("@progid", SqlDbType.Int).Value = module);
if(compID == null)
cmd.Parameters.Add(new SqlParameter("@compId", SqlDbType.VarChar).Value = DBNull.Value);
else
cmd.Parameters.Add(new SqlParameter("@compId", SqlDbType.VarChar).Value = compID);
if (compDesc == null)
cmd.Parameters.Add(new SqlParameter("@compDesc", SqlDbType.VarChar).Value = DBNull.Value);
else
cmd.Parameters.Add(new SqlParameter("@compDesc", SqlDbType.VarChar).Value = compDesc);
if (compType == null)
cmd.Parameters.Add(new SqlParameter("@compType", SqlDbType.VarChar).Value = DBNull.Value);
else
cmd.Parameters.Add(new SqlParameter("@compType", SqlDbType.VarChar).Value = compType);
if (equipMake == null)
cmd.Parameters.Add(new SqlParameter("@equipMake", SqlDbType.VarChar).Value = DBNull.Value);
else
cmd.Parameters.Add(new SqlParameter("@equipMake", SqlDbType.VarChar).Value = equipMake);
if (equipModel == null)
cmd.Parameters.Add(new SqlParameter("@equipModel", SqlDbType.VarChar).Value = DBNull.Value);
else
cmd.Parameters.Add(new SqlParameter("@equipModel", SqlDbType.VarChar).Value = equipModel);
if (compMake == null)
cmd.Parameters.Add(new SqlParameter("@compMake", SqlDbType.VarChar).Value = DBNull.Value);
else
cmd.Parameters.Add(new SqlParameter("@compMake", SqlDbType.VarChar).Value = compMake);
cmd.Parameters.Add(new SqlParameter("@compSize", SqlDbType.VarChar).Value = compSize);
cnn.Open();
SqlDataReader dr = cmd.ExecuteReader();
dt.Load(dr);
return dt;
----------------------------------------------- Это исключение после того, как изменил мой код-------
Исключение типа 'System.InvalidCastException' произошло в BLL.dll, но не было обработано в коде пользователя
Additional information: The SqlParameterCollection only accepts non-null SqlParameter type objects, not Int32 objects.