溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

asp.net SqlParameter根據條件有選擇的添加參數(shù)

發(fā)布時間:2021-02-08 10:09:10 來源:億速云 閱讀:208 作者:小新 欄目:開發(fā)技術

這篇文章將為大家詳細講解有關asp.net SqlParameter根據條件有選擇的添加參數(shù),小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

SqlParameter帶參數(shù)的增刪改查語句,可以防止注入.有時候寫sql語句的時候會根據方法傳進來的參數(shù)來判斷sql語句中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)在想根據集合UserInfo內屬性來添加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> 的元素復制到新數(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; 
} 
}

關于“asp.net SqlParameter根據條件有選擇的添加參數(shù)”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI