我试图使用Dapper与DB2服务器进行通信。DB2服务器不支持开箱即用的命名参数。它希望在查询中为每个参数指定一个问号。有什么办法支持Dapper的吗?也许Dapper可以在调用查询之前用?替换所有的?内容?如果是的话,Dapper是否按顺序生成参数?
如果不是,更新的DB2客户端驱动程序似乎支持命名参数,但默认情况下是关闭的。我不知道怎么打开它。我尝试将该参数添加到我的客户机上的db2cli.ini公共部分,而不改变行为。那是给OleDB司机的。
更新:然后我尝试了.NET驱动程序。它似乎解析了变量名,但在运行时仍然出现了一个奇怪的错误:
{"ERROR 07004DB2/ not 64 SQL0313N执行语句中的变量数、OPEN语句中的变量数或参数化游标的OPEN语句中的参数数不等于所需的值数“}。
我的声明如下:
INSERT INTO XD.ALERT (PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, :Level, :AlertID, :AlertDesc, :DateTime)插入是否算为执行?据我所知,我在查询中有四个参数,在使用的命令对象中有四个参数。(我直接使用SqlMapper.cs,可以看到调试器中的所有内容。)
发布于 2019-02-25 20:38:49
你可以试试这个:
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
});
}https://stackoverflow.com/questions/15580001
复制相似问题