1. 程式人生 > >asp.net SqlParameter 根據條件 有選擇的新增引數

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][email protected]";
            strSql += " and [name]
[email protected]
"; strSql += " and [code][email protected]"; strSql += " and [password][email protected]"; 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][email protected]";
            if (!string.IsNullOrEmpty(a.name)) strSql += " and [name]
[email protected]
"; if (!string.IsNullOrEmpty(a.code)) strSql += " and [code][email protected]"; if (!string.IsNullOrEmpty(a.password)) strSql += " and [password][email protected]"; 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; 
		} 
	}



相關推薦

asp.net SqlParameter 根據條件 選擇新增引數

SqlParameter帶引數的增刪改查語句,可以防止注入.有時候寫sql語句的時候會根據方法傳進來的引數來判斷sql語句中where條件的引數. 一般方法 DAL層方法 public UserInfo GetAll(UserInfo a) { st

ASP .NET CORE 根據環境變量支持多個 appsettings.json

源代碼 read pro only 根據 config asp 得到 host 0.背景 在開發項目的過程當中,生產環境與調試環境的配置肯定是不一樣的。拿個最簡單的例子來說,比如連接字符串這種東西,調試環境肯定是不能連接生產數據庫的。在之前的話,這種情況只能說是你 COPY

Asp.net Web Api開發Help Page 新增對資料模型生成註釋的配置和擴充套件

        在使用webapi框架進行介面開發的時候,編寫文件會需要與介面同步更新,如果採用手動式的更新的話效率會非常低。webapi框架下提供了一種自動生成文件的help Page頁的功能。 但是原始版本的效果不是很好,最重要的一點是沒有對資料模型的詳細

[ASP.NET] GridView 依條件更改某列背景顏色

protected void gvList_RowDataBound(object sender, GridViewRowEventArgs e) { DataRowView drv = (DataRowView)e.Row.DataItem; if ((e.Ro

Asp.net中滿足條件的複選框自動被選中(一)

一、有這樣一種需求:給單個使用者分組,分兩步走 1)載入所有使用者組 2)當前使用者已在的分組的複選框被勾選上 二、下面先演示一下想要的效果: 1、給單個使用者分組,選擇使用者: 2、彈框 查詢所有分類列表;把已分組的複選框選中,效果圖如下:

Asp.net中滿足條件的複選框自動被選中(二)

被選複選框的靠前顯示 一、其他不多說,直接進入正題:我現在要把前一篇部落格中,被選中的複選框都靠前顯示,就是說要有圖一的效果做成圖二的效果:                二、實現思路   這也是一個難點,困擾了我很久,現在和大家一起分享:       實現思

ASP.NET C#根據HTML頁面匯出PDF

在啟明星採購系統裡,新增了匯出PDF功能。整個功能使用了第三方軟體 wkhtmltopdf(下載) 官網 https://wkhtmltopdf.org/ 提供有更多版本下載 他可以把HTML頁面轉換為PDF,該軟體簡直是incredible-不可思議了,功能太強大了。

asp.net 在後臺給頁面動態新增Css樣式

在後臺給頁面新增Css樣式protectedvoid Page_Load(object sender, EventArgs e)        {if (!Page.IsPostBack)            {   

Asp.net的身份驗證哪些,區別是什麼?

Asp.net的身份驗證有有三種,分別是"Windows | Forms | Passport",其中又以Forms驗證用的最多,也最靈活。Forms 驗證方式對基於使用者的驗證授權提供了很好的支援,可以通過一個登入頁面驗證使用者的身份,將此使用者的身份發回到客戶端的Cook

AOP實踐--ASP.NET MVC 5使用Filter過濾Action引數防止sql注入,讓你程式碼安全簡潔

在開發程式的過程中,稍微不注意就會隱含有sql注入的危險。今天我就來說下,ASP.NET mvc 5使用Filter過濾Action引數防止sql注入,讓你程式碼安全簡潔。不用每下地方對引數的值都進行檢查,看是使用者輸入的內容是否有危險的sql。如果沒個地方都要加有幾個缺

ASP.NET操作DataTable各種方法總結(給Datatable新增行列、DataTable選擇排序等)

  using System; using System.Collections.Generic; using System.Data; using System.Text; namespace Gzcms.Common { public cl

ASP.NET中共有哪幾種類型的控件?其中,HTML控件、HTML服務器控件和WEB服務器控件之間什麽區別

web服務 編程 用戶 控制 什麽 lin bsp 兼容性 check ASP.NET的控件包括WEB服務器控件、WEB用戶控件、WEB自定義控件、HTML服務器控件和HTML控件。HTML控件、HTML服務器控件和WEB服務器控件之間的區別如下所示。q HTML

asp.net Cookie 新增 刪除 獲取

logs ice crypt 用戶信息 asp.net bject pri 保存 trim //保存獲取 Cookie public class OperatorProvider { public static OperatorPr

最新版 INSPINIA IN+ - WebApp Admin Theme v2.7.1,包含asp.net MVC5示例代碼,做管理系統最佳的選擇

代碼 ima height href logs spin 選擇 com .cn 下載地址:http://download.csdn.net/download/wulang1988/10039402 最新版 INSPINIA IN+ - WebApp Admin Theme

什麽是Asp.net Core?和 .net core什麽區別?

pla session 推出 pre info 訪問 studio span 寫到 為什麽要寫這篇文章 寫這篇文章有兩個原因,第一個是因為新站點創建出來後一直空置著,所以寫一篇文章放在這裏。第二就是因為近來在做一些基於Asp.net core平臺的項目開發,也遇到了一些問題

ASP.NET MVC中四種過濾器類型

std tpc min fsm emc 為什麽 lbp yun eal 在ASP.NET MVC中有四種過濾器類型 Action 1、在ASP.NET MVC項目中,新建文件夾Filter,然後新建類MyCustormFilter,繼承自ActionFilterA

語言學習讀書筆記PHP和asp.net編程語言哪個更前途?

asp .NET PHP 編程 數據庫 編程語言一直是學習計算機編程門專業的熱門討論話題,而我也選擇了這個專業,入學一年了,馬上面臨著語言的選擇問題,業余我需要選擇一門編程語言作為重點研究對象,那麽問題來了:到底是選擇PHP還是ASP.NET呢?這是個需要仔細考慮的問題。關於PHP語言:P

asp.net中,<%#%>,<%=%>和<%%>分別是什麽意思,什麽區別 --轉

bind ase bbbb pwd write ava int pla public 在asp.net中經常出現包含這種形式<%%>的html代碼,總的來說包含下面這樣幾種格式: 一. <%%> 這種格式實際上就是和asp的用法一樣的,只是asp中

通過ASP.NET MVC框架 + 原生JavaScript + Ajax + SQL SERVER 實現一個簡單的論壇功能的網站(通過iis發布的例子)

簡單的 接下來 發送 思維 學會 control javascrip 數據庫 今天   ASP.NET MVC. M 為Model模型層, V 為View視圖層, C 為Controller控制層。要想使用MVC框架來寫網站就需要了解M V C 的作用分別為哪些。給大家簡單

解決asp.net中“從客戶端中檢測到潛在危險的Request.Form值”的錯誤

在使用ASP.NET MVC 5 的過程中,在使用富文字編輯器過程中,出現如標題中的錯誤提示。網上找了一些解決方法。大多就是以mvc3,mvc4為版本的解決方案。在mvc5的controller的action方法頭部新增就可以解決 [ValidateInput(false)] 另外推薦一