asp.netSqlParameter如何根据条件有选择的添加参数
ASP 如何 参数 添加 选择 条件 根据
2023-06-13 09:15:27 时间
SqlParameter带参数的增删改查语句,可以防止注入.有时候写sql语句的时候会根据方法传进来的参数来判断sql语句中where条件的参数.
一般方法
DAL层方法
复制代码代码如下:
一般方法
DAL层方法
publicUserInfoGetAll(UserInfoa)
{
stringstrSql="selectid,name,code,passwordfrom[tb].[dbo].[User]where1=1";
strSql+="and[id]=@id";
strSql+="and[name]=@name";
strSql+="and[code]=@code";
strSql+="and[password]=@password";
SqlParameter[]parameters={
newSqlParameter("@id",a.id)
newSqlParameter("@name",a.name)
newSqlParameter("@code",a.code),
newSqlParameter("@password",a.password)
};
SqlDataReaderreader=SqlHelper.ExecuteReader(strSql,parameters);
UserInfohc=newUserInfo();
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();
returnhc;
}
现在想根据集合UserInfo内属性来添加SqlParameter参数
方法如下
DAL层方法
publicUserInfoGetALL(UserInfoa)
{
stringstrSql="selectid,name,code,passwordfrom[tb].[dbo].[User]where1=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=newList<SqlParameter>();
if(a.id>0)parametertemp.Add(newSqlParameter("@id",a.id));
if(!string.IsNullOrEmpty(a.name))parametertemp.Add(newSqlParameter("@name",a.name));
if(!string.IsNullOrEmpty(a.code))parametertemp.Add(newSqlParameter("@code",a.code));
if(!string.IsNullOrEmpty(a.password))parametertemp.Add(newSqlParameter("@password",a.password));
SqlParameter[]parameters=parametertemp.ToArray();//ToArray()方法将List<T>的元素复制到新数组中。
SqlDataReaderreader=SqlHelper.ExecuteReader(strSql,parameters);
UserInfohc=newUserInfo();
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();
returnhc;
}
DBUtility层SqlHelper
publicSqlDataReaderExecuteReader(stringquery,paramsSqlParameter[]parameters)
{
SqlConnString=GetConnect2();
SqlConnString.Open();
SqlCommandSqlCmd=newSqlCommand();
SqlCmd.Connection=SqlConnString;
SqlCmd.CommandText=query;
//SqlCmd.Parameters.AddRange(parameters);//AddRange()不能传空参数组
//params的意思就是允许传空参数组
foreach(SqlParameteriteminparameters)
{
SqlCmd.Parameters.Add(item);
}
SqlDataReaderdr;
try
{
dr=SqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
returndr;
}
catch(Exceptionee)
{
SqlConnString.Close();
throwee;
}
}
相关文章
- 如何使用nginx作为docker容器中ASP.NET应用的反向代理
- ASP结合MySQL:实现快速数据库连接(asp如何连接mysql)
- ASP应用技术:连接Oracle数据库(asp连接oracle)
- .net安装 Linux 上的 ASP.NET 环境(linux安装asp)
- 如何使用C ASP实现MySQL数据库连接(c asp连接mysql)
- ASP网页MySQL注入及防御研究(asp页面mysql注入)
- ASP实现MySQL数据库连接及编写代码(asp连接mysql代码)
- ASP读取MySQL时间的方式(asp读取mysql时间)
- 使用MySQL轻松实现ASP数据库应用(asp数据库用mysql)
- 实现有效管理ASP与MySQL搭配 实现高效管理(asp搭配mysql如何)
- 使用MySQL,让ASP走向新的维度(asp如何用mysql)
- ASP 操作简单,快速修改MySQL数据库(asp修改mysql)
- 从ASP学习如何写Oracle函数(asp如何写oracle)
- asp中COM组件中如何连接数据库的代码
- asp下如何在ADO服务器端利用好缓存技术?
- asp.netRepeater取得CheckBox选中的某行某个值
- Asp.NetHttpHandler妙用
- asp.net实现动态显示当前时间(不用javascript不考虑开销)
- asp.net下ajax.ajaxMethod使用方法
- asp.net字符串处理类代码
- Asp.net后台调用js2种方法