首页 新闻 会员 周边

ADO.NET Driver for Mysql是不是有bug 为何这么写老是报没有定义@EndDate的错误

0
悬赏园豆:5 [已关闭问题] 关闭于 2017-02-06 18:03

ADO.NET Driver for Mysql是不是有bug 为何这么写老是报没有定义@EndDate的错误

Mysql的参数是不需要定义的,直接用就行了

代码如下,请高手看看

public void CreateSnapshot(string dateConfigID)
{
//这么写老是报语法错误
string sql = @"SELECT @EndDate:=EndDate FROM dateconfig WHERE ID=@ConfigID;
UPDATE department
SET DateConfigID =@ConfigID,
SnapshotDate = @EndDate
WHERE
DateConfigID = '-99' AND DeptCode NOT in(
SELECT T.DeptCode FROM(
SELECT DeptCode FROM department a WHERE a.DateConfigID=@ConfigID
) T);
var param = new DynamicParameters();
//param.Add("EndDate", DateTime.MinValue);
param.Add("ConfigID", dateConfigID);
OpenConnection(conn =>
{
conn.Execute(sql, param);
});

}

baoj2010的主页 baoj2010 | 初学一级 | 园豆:102
提问于:2017-01-11 11:33
< >
分享
所有回答(4)
0

把第一句先查出来再放进去看看了

吴瑞祥 | 园豆:29449 (高人七级) | 2017-01-11 11:43
0

你在UPDATE 用到了@EndDate,但是您没有通过程序传递参数名称为@EndDate,所以报错

神牛003 | 园豆:513 (小虾三级) | 2017-01-11 13:03
0

只会用MySql.Data.dll,sql语句里面占位符用的是?,而且在param.Add("?id",1) 这样参数名称都带有占位符。

孤零落叶寒 | 园豆:606 (小虾三级) | 2017-01-11 13:44
0

<add name="JXConnReadOnly" connectionString="Server=127.0.0.1;Port=3306;Database=jxsystem;User=root; Password=123456;Allow User Variables=True" />

连接字符串加上Allow User Variables=True就OK了 @EndDate并不需要外部传入,是用户自定义的参数,sql内部自己赋值的

baoj2010 | 园豆:102 (初学一级) | 2017-02-06 18:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册