读书人

SqlParameterCollection 只接受非空的

发布时间: 2012-06-21 13:42:41 作者: rapoo

SqlParameterCollection 只接受非空的 SqlParameter 类型对象。 参数名: value
我是个菜鸟,请各位大哥帮帮忙帮我看看,小妹不胜感激
代码:


/// <summary>
/// DBOperate 的摘要说明
/// </summary>
public class DBOperate
{
public DBOperate()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private SqlConnection conn=null;
private SqlCommand cmd=null;
private SqlDataReader dr = null;
private SqlDataAdapter adp = null;
private DataSet ds = null;
private DataTable dt = null;

//connect db
public SqlConnection DBConnection()
{
conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BookShopConnectionString"].ConnectionString);
return conn;
}
//close db , dispose resources
public void DBClose()
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
conn.Dispose();
}
}
//create command
public SqlCommand createCommand(string str, CommandType cmdType)
{
cmd = new SqlCommand();
cmd.Connection = DBConnection();
cmd.CommandText = str;
cmd.CommandType = cmdType;
return cmd;
}
//create command with sqlParameters
public SqlCommand createCommand(string str, CommandType cmdType, SqlParameter[] param)
{
cmd = new SqlCommand();
cmd.Connection = DBConnection();
cmd.CommandText = str;
cmd.CommandType = cmdType;
foreach (SqlParameter par in param)
{
cmd.Parameters.Add(par);
}
return cmd;
}
//execute dataReader
public SqlDataReader executeReader(string str, CommandType cmdType)
{
conn = DBConnection();
try
{
conn.Open();
cmd = createCommand(str, cmdType);
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); //if transfers dr.Close(), then will also transfer conn.Close()
}
catch (Exception ee)
{
throw ee;
}
return dr;
}
//execute dataReader with sqlParameters
public SqlDataReader executeReader(string str, CommandType cmdType, SqlParameter [] param)
{
conn = DBConnection();
try
{
conn.Open();
cmd = createCommand(str, cmdType, param);
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); //if transfers dr.Close(), then will also transfer conn.Close()
}
catch (Exception ee)
{
throw ee;
}
return dr;
}
//execute dataSet
public DataSet executeDataSet(string str, CommandType cmdType)
{
conn = DBConnection();
try
{
conn.Open();
cmd = createCommand(str, cmdType);
adp = new SqlDataAdapter(cmd);
ds = new DataSet();
adp.Fill(ds);
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();


}
return ds;
}
//execute dataSet with sqlParameters
public DataSet executeDataSet(string str, CommandType cmdType, SqlParameter [] param)
{
conn = DBConnection();
try
{
conn.Open();
cmd = createCommand(str, cmdType, param);
adp = new SqlDataAdapter(cmd);
ds = new DataSet();
adp.Fill(ds);
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();
}
return ds;
}
//execute datatable
public DataTable executeDataTable(string str, CommandType cmdType)
{
conn = DBConnection();
try
{
conn.Open();
cmd = createCommand(str, cmdType);
adp = new SqlDataAdapter(cmd);
ds = new DataSet();
adp.Fill(ds);
dt = ds.Tables[0];
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();
}
return dt;
}
//execute datatable with sqlParameters
public DataTable executeDataTable(string str, CommandType cmdType, SqlParameter [] param)
{
conn = DBConnection();
try
{
conn.Open();
cmd = createCommand(str, cmdType,param);
adp = new SqlDataAdapter(cmd);
ds = new DataSet();
adp.Fill(ds);
dt = ds.Tables[0];
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();
}
return dt;
}

//execute nonQuery
public void executeNonQuery(string str, CommandType cmdType)
{
conn = DBConnection();
try
{
conn.Open();
cmd = createCommand(str, cmdType);
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();
}
}
//execute nonQuery with sqlParameters
public void executeNonQuery(string str, CommandType cmdType, SqlParameter [] param)
{
conn = DBConnection();
try
{
conn.Open();
cmd = createCommand(str, cmdType,param);
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ee)
{
throw ee;
}
finally
{
conn.Close();
}
}
}


[解决办法]
没看到你给参数 SqlParameter 传值的地方,是不是传的null
------解决方案--------------------


这个helper的地方看不出什么问题,应该是你用某个函数的时候出错了。

例如你调用
public SqlDataReader executeReader(string str, CommandType cmdType, SqlParameter [] param)

执行一个stored procedure,stored procedure期望有参数,但是你没有传参数进来,就会出现这种错误。
[解决办法]
提示参数非空的,你看一下是哪个地方传空了

读书人网 >asp.net

热点推荐