[英]using Dapper with '?'
我正在嘗試使用Dapper與DB2服務器進行通信。 DB2服務器不支持現成的命名參數。 它期望查詢中的每個參數都有一個問號。 Dapper有什么方法可以支持這一點嗎? 也許Dapper可以將所有@Name
替換為?
在調用查詢之前? 如果是這樣,Dapper是否按順序生成參數?
如果不是,則似乎較新的DB2客戶端驅動程序支持命名參數,但默認情況下處於關閉狀態。 我不知道如何打開它。 我嘗試將該參數添加到客戶機上的db2cli.ini
[COMMON]部分,但行為沒有變化。 那是針對OleDB
驅動程序的。
更新:然后,我嘗試了.NET驅動程序。 那個似乎解析了變量名,但是運行時我仍然收到一個奇怪的錯誤:
{“ ERROR [07004] [IBM] [DB2 / NT64] SQL0313N對於參數化游標,EXECUTE語句中的變量數,OPEN語句中的變量數或OPEN語句中的參數數不等於所需的值數。“}
我的陳述如下:
INSERT INTO XD.ALERT (PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, :Level, :AlertID, :AlertDesc, :DateTime)
INSERT算作EXECUTE嗎? 據我所知,查詢中有四個參數,正在使用的命令對象中有四個參數。 (我直接使用SqlMapper.cs
,並且可以在調試器中看到所有內容。)
您可以嘗試以下方法:
public void SaveAlert(int? level, int? alertId, string alertDesc, DateTime date)
{
_conn.Execute("INSERT INTO XD.ALERT(PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, @Level, @AlertID, @AlertDesc, @DateTime)",
new {
Level = level,
AlertId = alertId,
AlertDesc = alertDesc,
DateTime = date
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.