1. 程式人生 > >使用Dapper進行引數化查詢

使用Dapper進行引數化查詢

使用Dapper操作Mysql資料庫中我介紹了使用dapper進行CURD基本操作,但在示例程式碼中引數雖然也是通過@開頭,但其實不是真正意義的引數化查詢,而是拼接sql,這種方式不利於防止sql注入,所以在Dappe中可以使用DynamicParameters動態引數集合新增引數,從而實現dapper下的引數化查詢;

示例程式碼

/// <summary>
        /// 增加一條資料
        /// </summary>
        public bool Add(User model)
        {
            DynamicParameters Parameters = new DynamicParameters();
            int cnt = 0;
            string sQuery = "INSERT INTO user (Login_Name,User_Pwd,User_Name,Phone_Num,Head_Portrait,Enabled,Create_Time,Update_Time)"
                              + " VALUES(@Login_Name,@User_Pwd,@User_Name,@Phone_Num,@Head_Portrait,@Enabled,@Create_Time,@Update_Time)";
            Parameters.Add("Login_Name", model.Login_Name);
            Parameters.Add("User_Pwd", model.User_Pwd);
            Parameters.Add("User_Name", model.User_Name);
            Parameters.Add("Phone_Num", model.Phone_Num);
            Parameters.Add("Head_Portrait", model.Head_Portrait);
            Parameters.Add("Enabled", model.Enabled);
            Parameters.Add("Create_Time", model.Create_Time);
            Parameters.Add("Update_Time", model.Update_Time);
            using (var connection = new MySqlConnection(connstr))
            {

                cnt = connection.Execute(sQuery,Parameters);
            }

            if (cnt > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 根據ID刪除一條資料
        /// </summary>
        public bool Delete(int id)
        {
            DynamicParameters Parameters = new DynamicParameters();
            int cnt = 0;
            string sQuery = "Delete FROM user " + "WHERE 
[email protected]
"; Parameters.Add("Id", id); using (var connection = new MySqlConnection(connstr)) { cnt = connection.Execute(sQuery,Parameters); } if (cnt > 0) { return true; } else { return false; } } /// <summary> /// 更新一條資料 /// </summary> public bool Update(User model) { DynamicParameters Parameters = new DynamicParameters(); string sQuery = "UPDATE user SET
[email protected]
_Name,[email protected]_Pwd,[email protected]_Name,[email protected]_Num,[email protected]_Portrait,[email protected],[email protected]_Time,[email protected]_Time"+" WHERE [email protected]"; Parameters.Add("Login_Name", model.Login_Name); Parameters.Add("User_Pwd", model.User_Pwd); Parameters.Add("User_Name", model.User_Name); Parameters.Add("Phone_Num", model.Phone_Num); Parameters.Add("Head_Portrait", model.Head_Portrait); Parameters.Add("Enabled", model.Enabled); Parameters.Add("Create_Time", model.Create_Time); Parameters.Add("Update_Time", model.Update_Time); Parameters.Add("Id", model.Id); int cnt = 0; using (var connection = new MySqlConnection(connstr)) { cnt = connection.Execute(sQuery,Parameters); } if (cnt > 0) { return true; } else { return false; } } /// <summary> /// 根據ID獲取實體物件 /// </summary> public User GetModel(int id) { DynamicParameters Parameters = new DynamicParameters(); string sQuery = "SELECT Id,Login_Name,User_Pwd,User_Name,Phone_Num,Head_Portrait,Enabled,Create_Time,Update_Time FROM user " + "WHERE Id = @Id"; Parameters.Add("Id", id); using (var connection = new MySqlConnection(connstr)) { return connection.Query<User>(sQuery,Parameters).FirstOrDefault(); } }

相關推薦

使用Dapper進行引數查詢

在使用Dapper操作Mysql資料庫中我介紹了使用dapper進行CURD基本操作,但在示例程式碼中引數雖然也是通過@開頭,但其實不是真正意義的引數化查詢,而是拼接sql,這種方式不利於防止sql注入,所以在Dappe中可以使用DynamicParameters動態引數

Text資料型別,引數查詢但未提供該引數(將null插入資料庫)

當你是使用引數化查詢時為引數賦時,比如command.Parameters.Add(@a,SqlDbType.Text,30).Value=a;當a=null是將報錯: 錯引數化查詢 '(@a varchar(100)....' 需要引數 '@a',但未提供該引數 只是因為你給a的為null,

使用Jmeter進行引數,關聯操作

今天和大家聊下使用Jmeter進行引數化即關聯操作,實現從檔案中讀取引數進行註冊,登入及抽獎的一系列操作。具體看下面的介紹吧。 1,首先在註冊介面處新增CSV Data Set Config,配置好引數資料資訊,如圖。 2,然後在註冊介面中配置引數,如圖,格式為:${name},需要用

【筆記】LR配置ODBC連線資料庫進行引數

很多時候我們需要大量的引數資料,但是光光靠手填寫是非常麻煩的,既然被測物件的資料都在資料庫,那麼我們直接讀取資料庫回來就輕鬆簡便很多。 data  wizard 提供了一個從ODBC的連接獲得資料轉化成引數的過程。過程如下: 一、配置ODBC ①開啟windows 下的控制面板下的管理工具

SpringBoot使用@RunWith(Parameterized.class)進行引數測試同時支援依賴注入,以及CommandLineRunner在單元測試時不執行主程序

問題提出 在使用SpringBoot進行單元測試的時候,我發現了兩個問題 使用引數化測試的時候,必須使用 @RunWith(Parameterized.class),而對Spring進行單元測試時,如果想使用依賴注入,即使用 @Autowired 註解,需要使

Linq TO Entity Or Linq TO EF 中的where引數查詢

using System; using System.Linq.Expressions; namespace Utils { /// <summary> /// 統一ParameterExpression /// </summary>

loadRunner之引數,對使用者名稱和密碼進行引數,並列印輸出

錄製指令碼,對使用者名稱和密碼進行引數化: Action() { web_url("WebTours", "URL=http://127.0.0.1:1080/WebTours/", "Res

.NET應用架構設計—面向查詢服務的引數查詢設計(分解業務點,單獨配置各自的資料查詢契約)

閱讀目錄: 1.背景介紹 2.對業務功能點進行邏輯劃分(如:A、B、C分別三個業務點) 2.1.配置對映關係,對業務點配置查詢契約(構造VS外掛方便生成查詢契約) 2.2.將配置好的對映策略檔案放在呼叫端,與服務不耦合 3.Dynamic、Dom動態構造服務端物件(Dynamic、D

Jmeter-資料庫資料進行引數

一、測試計劃載入mysql驅動(官網下載mysql-connector-java-5.1.44-bin.jar後放置lib目錄下)           二、新增配置元件-JDBC Connection

PHP中使用引數查詢

PHP 中提供了三種訪問 MySQL 資料庫的擴充套件,即 mysql,mysqli 和 PDO。它們的區別可以比較如下: 擴充套件 mysql mysqli PDO PHP 版本 2.0+ 5.0+ 5.1+ 生命週期 廢棄 活躍 活躍 面向物件語法 否 是 是 過程式語

loadrunner 連線mysql資料庫獲取資料進行引數

  要使用loadrunner連線mysql,取資料庫中的資料進行引數,需要先安裝mysql 驅動。可在網上下載。 以下是loadrunner上連線mysql資料庫的配置: 1、選擇要替換為引數的內容,右鍵->彈出面板->選擇replace with a parameter。

【Jmeter】——sql引數查詢測試

前言   現在大家寫的sql語句基本都是引數化的   當然在jmeter中也是可以測試引數化的sql語句   但是我始終都是有些疑問   不知道為什麼要測引數化的,我感覺沒什麼區別呢   

使用jmeter進行引數的兩種方式

一、使用函式助手進行引數化jmeter自帶一個函式助手,通過函式助手可以幫助我們做很多事情,下圖紅框中的就是函式助手點選函式助手可以看到函式助手有很多功能,可以生成很多不同資料,我一般常用的是Random和RandomString兩個,Radom會生成一個隨機的數字,這個數字

sql引數查詢

//在ASP.NET程式中使用引數化查詢 //ASP.NET環境下的查詢化查詢也是通過Connection物件和Command物件完成。如果資料庫是SQL Server,就可以用有名字的引數了,格式是“@”字元加上引數名。 SqlConnection conn = new SqlCon

淺析Sql Server引數查詢

錯誤認識1.不需要防止sql注入的地方無需引數化   引數化查詢就是為了防止SQL注入用的,其它還有什麼用途不知道、也不關心,原則上是能不用引數就不用引數,為啥?多麻煩,我只是做公司內部系統不用擔心SQL注入風險,使用引數化查詢不是給自己找麻煩,簡簡單單拼SQL,萬事OK 錯誤認識2.引數化查詢時是否指定

SqlParameter引數查詢

     上篇部落格寫了關於重構程式碼用到的SQLHelper類,這個類包括四種函式,根據是否含參和是否有返回值各分兩種。在這裡寫寫傳參過程用到的SqlParameter。      如果我們使用如下

LoadRunner12使用教程(一)——如何進行引數

loadrunner引數化的使用,在自動化測試中幾乎是一項必會的技能,那麼在LR中,引數化應該如何進行呢? 當我們嘗試模擬50個使用者去訪問系統時,我們需要提供50個使用者名稱供指令碼使用。 在指令碼中選中使用者名稱,右鍵來新建引數 之後,再 次右鍵來設定屬性引數

PDO引數查詢

引數化查詢(Parameterized Query或Parameterized Statement)是指在設計與資料庫連結並訪問資料時,在需要填入數值或資料的地方,使用引數(Parameter)來給值,這個方法目前已被視為最有效可預防SQL注入攻擊的攻擊手法的防禦方式。

ASP.NET中引數查詢

一、引數化查詢原理 在使用引數化查詢的情況下,資料庫伺服器不會將引數的內容視為SQL指令的一部份來處理,而是在資料庫完成 SQL指令的編譯後,才套用引數執行,因此就算引數中含有惡意的指令,由於已經編譯完成,就不會被資料庫所執行。 有部份的開發人員可能會認為使用引數化查詢,

VBA中使用ADO,引數查詢出現 Automation error

最近初次嘗試在VBA中使用ADO物件進行引數化查詢,一直出現Automation error,網上總是找不到對應的解決辦法,經過反覆嘗試,終於搞清楚了。 假設cmd是ADODB.command 物件,其設定過程省略,要點集中在CommandText屬性和Parameters