asp.net SqlParameter 根据条件 有选择的添加参数

SqlParameter带参数的增删改查语句,可以防止注入.有时候写sql语句的时候会根据方法传进来的参数来判断sql语句中where条件的参数.

一般方法

DAL层方法

public UserInfo GetAll(UserInfo a)
{
            string strSql = "select id,name,code,password from [tb].[dbo].[User] where 1=1";
            strSql += " and [id]=@id";
            strSql += " and [name]=@name";
            strSql += " and [code]=@code";
            strSql += " and [password]=@password";
            SqlParameter[] parameters = { 
					     new SqlParameter("@id", a.id)
                                             new SqlParameter("@name", a.name)
                                             new SqlParameter("@code", a.code), 
                                             new SqlParameter("@password", a.password)
                                 };
            SqlDataReader reader = SqlHelper.ExecuteReader(strSql, parameters);
            UserInfo hc = new UserInfo();
            while(reader.Read())
            {
                hc.id = reader.GetInt32(reader.GetOrdinal("id"));
                hc.name = reader.GetString(reader.GetOrdinal("name"));                
                hc.code = reader.GetString(reader.GetOrdinal("code"));
                hc.password = reader.GetString(reader.GetOrdinal("password"));
            }
            reader.Close();
            return hc;
}
现在想根据集合UserInfo内属性来添加SqlParameter参数

方法如下

DAL层方法

public UserInfo GetALL(UserInfo a)
{
            string strSql = "select id,name,code,password from [tb].[dbo].[User] where 1=1";
            if (a.id>0) strSql += " and [id]=@id";
            if (!string.IsNullOrEmpty(a.name)) strSql += " and [name]=@name";
            if (!string.IsNullOrEmpty(a.code)) strSql += " and [code]=@code";
            if (!string.IsNullOrEmpty(a.password)) strSql += " and [password]=@password";
            List<SqlParameter> parametertemp = new List<SqlParameter>();
            if (a.id > 0) parametertemp.Add(new SqlParameter("@id", a.id));
            if (!string.IsNullOrEmpty(a.name)) parametertemp.Add(new SqlParameter("@name", a.name));
            if (!string.IsNullOrEmpty(a.code)) parametertemp.Add(new SqlParameter("@code", a.code));
            if (!string.IsNullOrEmpty(a.password)) parametertemp.Add(new SqlParameter("@password", a.password));
            SqlParameter[] parameters = parametertemp.ToArray();//ToArray()方法将 List<T> 的元素复制到新数组中。
            
            SqlDataReader reader = SqlHelper.ExecuteReader(strSql, parameters);
            UserInfo hc = new UserInfo();
            while (reader.Read())
            {
                hc.id = reader.GetInt32(reader.GetOrdinal("id"));
                hc.name = reader.GetString(reader.GetOrdinal("name"));                
                hc.code = reader.GetString(reader.GetOrdinal("code"));
                hc.password = reader.GetString(reader.GetOrdinal("password"));
            }
            reader.Close();
            return hc;
 }


DBUtility层SqlHelper

public SqlDataReader ExecuteReader(string query, params SqlParameter[] parameters)
        {        
		SqlConnString = GetConnect2();
		SqlConnString.Open();
		SqlCommand SqlCmd = new SqlCommand(); 
		SqlCmd.Connection = SqlConnString; 
		SqlCmd.CommandText = query; 
		//SqlCmd.Parameters.AddRange(parameters);//AddRange()不能传空参数组
		//params 的意思就是允许传空参数组
		foreach (SqlParameter item in parameters) 
		{ 
			SqlCmd.Parameters.Add(item); 
		} 
		SqlDataReader dr; 
		try 
		{ 
			dr = SqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
 			return dr; 
		} 
		catch (Exception ee) 
		{ 
			SqlConnString.Close();
 			throw ee; 
		} 
	}



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值