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);
});
}
把第一句先查出来再放进去看看了
你在UPDATE 用到了@EndDate,但是您没有通过程序传递参数名称为@EndDate,所以报错
只会用MySql.Data.dll,sql语句里面占位符用的是?,而且在param.Add("?id",1) 这样参数名称都带有占位符。
<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内部自己赋值的