任何人都可以帮助我更正此代码。
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;
--------------------------------------------------这是更改我的代码后的异常-------
BLL.dll中发生了'System.InvalidCastException'类型的异常,但未在用户代码中处理
Additional information: The SqlParameterCollection only accepts non-null SqlParameter type objects, not Int32 objects.
答案 0 :(得分:0)
这很好用。感谢大家的支持和鼓励。
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 = new DataTable();
using (SqlConnection con = new SqlConnection(cnnString))
{
con.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = con;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spGetCompartmentsList";
cmd.Parameters.Add(new SqlParameter("@progid", module));
cmd.Parameters.Add(new SqlParameter("@compId", SqlDbType.VarChar));
if (compID == null)
cmd.Parameters["@compId"].Value = DBNull.Value;
else
cmd.Parameters["@compId"].Value = compID;
cmd.Parameters.Add(new SqlParameter("@compDesc", SqlDbType.VarChar));
if (compDesc == null)
cmd.Parameters["@compDesc"].Value = DBNull.Value;
else
cmd.Parameters["@compDesc"].Value = compDesc;
cmd.Parameters.Add(new SqlParameter("@compType", SqlDbType.VarChar));
if (compType == null)
cmd.Parameters["@compType"].Value = DBNull.Value;
else
cmd.Parameters["@compType"].Value = compType;
cmd.Parameters.Add(new SqlParameter("@equipMake", SqlDbType.VarChar));
if (equipMake == null)
cmd.Parameters["@equipMake"].Value = DBNull.Value;
else
cmd.Parameters["@equipMake"].Value = equipMake;
cmd.Parameters.Add(new SqlParameter("@equipModel", SqlDbType.VarChar));
if (equipModel == null)
cmd.Parameters["@equipModel"].Value = DBNull.Value;
else
cmd.Parameters["@equipModel"].Value = equipModel;
cmd.Parameters.Add(new SqlParameter("@compMake", SqlDbType.VarChar));
if (compMake == null)
cmd.Parameters["@compMake"].Value = DBNull.Value;
else
cmd.Parameters["@compMake"].Value = compMake;
cmd.Parameters.Add(new SqlParameter("@compSize", compSize));
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
}
}
return dt;
}