1. 程式人生 > >Dapper 執行帶引數的SQL語句時,報"必須宣告標量變數@xxx"

Dapper 執行帶引數的SQL語句時,報"必須宣告標量變數@xxx"

最近在學習輕量級的ORM——Dapper,同時也在嘗試著自己實現一些功能。

但是當嘗試拼接Sql,在填入引數的時候出了一些問題。

以下是示例程式碼,首先是宣告一個SqlCommand物件。

                    SqlCommand cmd = new SqlCommand();
                    //構建SQL語句
                    cmd.CommandText = @"SELECT * FROM Test WHERE [email protected]";

                    //構建SQL Parameter
                    SqlParameter parameter = new SqlParameter();
                    parameter.ParameterName = "test";
                    parameter.Value = "test";
                    cmd.Parameters.Add(parameter);
然後執行查詢語句
                //執行查詢語句
                var result = Connection.QuerySingleOrDefault(cmd.CommandText, cmd.Parameters);
然後此時會出現如下錯誤:

必須宣告標量變數@test. 然而很明顯,我們在SqlCommand中已經添加了名為@test的引數。那麼仍然在報這個問題。

那麼問題究竟出在哪兒?答案就是在Dapper執行Query時,並沒有成功的將SqlParameters物件填充進去。

該如何解決呢?我們可以使用Dapper所定義的DynamicParameters。

                    DynamicParameters parameters = new DynamicParameters();
                    //引數名,value
                    parameters.Add("test", "test");
這個DynamicParameters官方的解釋: A bag of parameters that can be passed to the Dapper Query and Execute methods。

不懂的自行Google,哈哈。

問題解決,(o゜▽゜)o☆[BINGO!]

相關推薦

Dapper 執行引數SQL語句"必須宣告標量變數@xxx"

最近在學習輕量級的ORM——Dapper,同時也在嘗試著自己實現一些功能。 但是當嘗試拼接Sql,在填入引數的時候出了一些問題。 以下是示例程式碼,首先是宣告一個SqlCommand物件。 SqlCommand cmd = new Sq

坑慘了!flink執行sql語句出現com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE

出現錯誤! Data truncation: Truncated incorrect DOUBLE value: '2018-10-18 19:21:47' Flink操作mysql資料庫對資料進行更新時。 原始sql語句: update t_lianlu_utili

CreateProcess 建立命令列引數的程序錯或者提示記憶體位置無效的可能的一個原因

可能的一個原因:命令列引數使用了常量。 例如: CreateProcess(NULL, "notepad",NULL,NULL,FALSE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi); 解釋: pszApplicationName和ps

MySQL實戰 | 01-當執行一條 select 語句MySQL 到底做了啥?

原文連結:當執行一條 select 語句時,MySQL 到底做了啥? 也許,你也跟我一樣,在遇到資料庫問題時,總時茫然失措,想重啟解決問題,又怕導致資料丟失,更怕重啟失敗,影響業務。 就算重啟成功了,對於問題的原因仍不知所以。 本文開始,記錄學習《MySQL實戰45講》專欄的過程。 也許有人會問,你記

在外部應用中執行oracle的sql語句出現“不支援的列資料型別”錯誤

如  SELECT OBJECTID,osmid,username,userid,versional,lat,lon,visible,changeset,timestamps,issimple,fc,dsg,code,gbcode,gbdes,tags,bz,names,n

excel拼接sql語句時間格式問題

問題:若直接插入時間的單元格 :="insert into t_entity_car (create_time,name,age) value ('"&A2&"','張三','"&B2&"');"          則插入的時間為時間戳 432

list執行remove和add方法java.util.ConcurrentModificationException的原因

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> { //AbstractCollection和List都繼承了Collection protect

python執行sql語句所傳引數含有單引號

  在編寫自己的程式時,需要實現將資料匯入資料庫,並且是帶引數的傳遞。 執行語句如下:   sql_str = "INSERT INTO teacher(t_name, t_info, t_phone, t_email) VALUES\   

Python連線MySQL資料庫執行sql語句引數問題

由於工作需要,今天寫了一個Python小指令碼,其中需要連線MySQL資料庫,在執行sql命令時需要傳遞引數,結果出問題了。在網上查了一下,發現有以下幾種方式傳遞引數: 一.直接把sql查詢語句完整寫入字串 try: connection = MySQLdb.connect(user

使用ADO.NET執行引數Sql語句

不帶引數的SQL語句 過載通用Update方法 /// <summary> /// 執行增、刪、改 (帶引數的SQL語句) /// <

執行多條SQL語句實現資料庫事務(不可傳入Sql引數

          《圖書館維護系統》的時候我負責任務管理模組,由於一些業務有些複雜,所以想用儲存過程,但是賈琳師哥說了一堆儲存過程的不好,讓我用sql語句。好吧,用就用吧,但是吧,大家都知道執行多條sql語句,是需要用到事務的(保持資料一致性),儲存過程中加事務我還是會滴

C#使用like的sql語句sql註入的方法

param 模擬實現 數據庫 img weight sin play www arp 本文實例敘述了在拼接sql語句的時候,如果遇到Like的情況該怎麽辦。 一般采用帶like的SQL語句進行簡單的拼接字符串時,需要開率遇到sql註入的情況。這確實是個需要註意的問題。 這

設置mysql在執行沒where條件的sql語句提醒

RoCE water mark pro 是否 http images mysq ext 查看mysql是否開啟更新sql語句沒有where的檢測開關,on表示開啟,off表殼關閉 設置命令 通過執行沒有where的Sql語句來驗證設置mysql在執行沒where條件的sql

hive中執行hql或建表語句丟擲Display all 459 possibilities? (y or n)錯誤的解決方法

  我昨天在hive上建表,一直報Display all 459 possibilities? (y or n) ,之前我以為是建表語句有問題,一直在改語句,後來在網上搜這個錯誤,原來語句裡混雜了Tab縮排,這可能是我使用notepad++的時候打出來的;       解決

Python連接MySQL數據庫執行sql語句的參數問題

字符串類 比較 pri name 漏洞 lose exc hal use 由於工作需要,今天寫了一個Python小腳本,其中需要連接MySQL數據庫,在執行sql命令時需要傳遞參數,結果出問題了。在網上查了一下,發現有以下幾種方式傳遞參數: 一.直接把sql查詢語句完整寫入

當我們輸入一條 SQL 查詢語句發生了什麼?

  我們經常說,看一個事兒千萬不要直接陷入細節裡,你應該先鳥瞰其全貌,這樣能夠幫助你從高維度理解問題。同樣,對於 MySQL 的學習也是這樣。平時我們使用資料庫,看到的通常都是一個整體。比如,你有個最簡單的表,表裡只有一個 ID 欄位,在執行下面這個查詢語句時:  複製程式

讓mybatis在執行SQL語句可以插入null值

在mybatis中,SQL語句在插入時預設不允許插入null值,如果在頁面中傳過來null值,在插入操作時會報錯 org.apache.ibatis.exceptions.PersistenceException: ### Error updating database.  

mybatis執行刪除delete語句異常執行

nnd,沒有報紅異常資訊,從來沒碰見過的問題,仔細發現只找到一個 was not registered for synchronization because synchronization is not active 異常,我就找啊找啊找,百度說是事務異常,還有說重複掃

如何在mybatis中一個insert,deleteupdate中執行多條SQL語句

一般我們會在applicationContect中這麼配置: <!-- 1. 資料來源 : DriverManagerDataSource --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSo

問題描述: 在使用mybatis對資料庫執行更新操作parameterType為某個具體的bean而bean中傳入的引數為null丟擲異常如下:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mappin