asp.net SqlParameter如何根據(jù)條件有選擇的添加參數(shù)
更新時(shí)間:2014年06月06日 10:25:35 作者:
有時(shí)候?qū)憇ql語(yǔ)句的時(shí)候會(huì)根據(jù)方法傳進(jìn)來(lái)的參數(shù)來(lái)判斷sql語(yǔ)句中where條件的參數(shù),下面有個(gè)示例,大家可以參考下
SqlParameter帶參數(shù)的增刪改查語(yǔ)句,可以防止注入.有時(shí)候?qū)憇ql語(yǔ)句的時(shí)候會(huì)根據(jù)方法傳進(jìn)來(lái)的參數(shù)來(lái)判斷sql語(yǔ)句中where條件的參數(shù).
一般方法
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;
}
現(xiàn)在想根據(jù)集合UserInfo內(nèi)屬性來(lái)添加SqlParameter參數(shù)
方法如下
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> 的元素復(fù)制到新數(shù)組中。
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()不能傳空參數(shù)組
//params 的意思就是允許傳空參數(shù)組
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;
}
}
一般方法
DAL層方法
復(fù)制代碼 代碼如下:
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;
}
現(xiàn)在想根據(jù)集合UserInfo內(nèi)屬性來(lái)添加SqlParameter參數(shù)
方法如下
DAL層方法
復(fù)制代碼 代碼如下:
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> 的元素復(fù)制到新數(shù)組中。
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
復(fù)制代碼 代碼如下:
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()不能傳空參數(shù)組
//params 的意思就是允許傳空參數(shù)組
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;
}
}
相關(guān)文章
.NET 6開(kāi)發(fā)TodoList應(yīng)用之實(shí)現(xiàn)PUT請(qǐng)求
PUT請(qǐng)求本身其實(shí)可說(shuō)的并不多,過(guò)程也和創(chuàng)建基本類似。這篇文章主要為大家介紹了.NET6實(shí)現(xiàn)PUT請(qǐng)求的示例詳解,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-12-12Net Core Web Api項(xiàng)目與在NginX下發(fā)布的方法
這篇文章主要介紹了Net Core Web Api項(xiàng)目與在NginX下發(fā)布的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03.Net Core實(shí)現(xiàn)圖片文件上傳下載功能
這篇文章主要為大家詳細(xì)介紹了.Net Core實(shí)現(xiàn)圖片文件上傳下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06c# rabbitmq 簡(jiǎn)單收發(fā)消息的示例代碼
這篇文章主要介紹了c# rabbitmq 簡(jiǎn)單收發(fā)消息的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08如何創(chuàng)建一個(gè)AJAXControlToolKit的擴(kuò)展控件
相信熟悉Microsoft提供的AJAXControlToolKit的朋友已經(jīng)感覺(jué)到它的強(qiáng)大了。但是如果我們需要其它一些控件,或者是我們碰到一些很好的javascript然后需要把它們整合到ajaxcontroltoolkit中,如何來(lái)做。???2009-08-08ASP.NET網(wǎng)站使用Kindeditor富文本編輯器配置步驟
首先下載編輯器然后部署編輯器最后在網(wǎng)頁(yè)中加入(ValidateRequest="false")引入腳本文件,具體配置步驟如下,有需求的朋友可以了解下哈2013-06-06.NET/C#利用反射調(diào)用含ref或out參數(shù)的方法示例代碼
這篇文章主要給大家介紹了關(guān)于.NET/C#利用反射調(diào)用含ref或out參數(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09