C# 在MySQL和C中使用表达式设置日期时间字段时出现异常#
我无法在名为C# 在MySQL和C中使用表达式设置日期时间字段时出现异常#,c#,mysql,datetime,C#,Mysql,Datetime,我无法在名为feeds的表上执行参数化SQL语句 该表的定义如下: CREATE TABLE `feeds` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `last_changed` datetime DEFAULT NULL, `next` datetime DEFAULT NULL, `delta` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=In
feeds
的表上执行参数化SQL语句
该表的定义如下:
CREATE TABLE `feeds` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`last_changed` datetime DEFAULT NULL,
`next` datetime DEFAULT NULL,
`delta` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1$$
下面是SQL语句
更新提要
设置提要
增量=@0,提要
下一步=@1,提要
上次更改=@2,其中id=19限制1
当我尝试使用表达式作为值时,错误出现在参数@1
上。这是价值
(2013-05-22 11:58:57+间隔15分钟)
这将生成以下错误
MySql.Data.MySqlClient.MySqlException(0x80004005):第1行“下一个”列的日期时间值不正确:“(2013-05-22 11:58:57+间隔15分钟)”
我试过用引号写日期时间,但没用
这就是我在C
中执行SQL命令的方式
ICollection pParameters=。。。。。。
MySqlCommand cmd=新的MySqlCommand(pSql,conn);
cmd.Prepare();
int i=0;
foreach(pParameters中的对象对象)
{
cmd.Parameters.AddWithValue(String.Format(“@{0}”),i.ToString(),obj);
i++;
}
cmd.ExecuteNonQuery();
您只能在参数中输入值,不能在表达式中输入值。尝试将查询更改为:
UPDATE feeds
SET feeds.delta=@0,feeds.next=@1,feeds.last_changed=@2 + INTERVAL 15 MINUTE
WHERE id = 19 LIMIT 1
然后将参数设置为仅日期/时间值-例如
2013-05-22 11:58:57
您只能将值放入参数中,而不能放入表达式中。尝试将查询更改为:
UPDATE feeds
SET feeds.delta=@0,feeds.next=@1,feeds.last_changed=@2 + INTERVAL 15 MINUTE
WHERE id = 19 LIMIT 1
然后将参数设置为仅日期/时间值-例如
2013-05-22 11:58:57
如果日期时间参数来自c#,则应使用
DateTime.AddMinutes(<yourdateTimeParameter>, 15);
DateTime.AddMinutes(,15);
如果datetime参数来自c#,则只需使用
DateTime.AddMinutes(<yourdateTimeParameter>, 15);
DateTime.AddMinutes(,15);
哦,好吧,我不知道这个。那太糟糕了,我必须改变设计来处理表达式。哦,好吧,我不知道这个。这太糟糕了,我必须修改设计来处理表达式。谢谢,我使用表达式是因为在运行时更容易修改单位。@MathewFoscarini为什么?它改变了什么?代码是可配置(分钟、小时、天等)功能的一部分。@MathewFoscarini好吧,这两种解决方案应该几乎相同,但无论如何,如果你找到一个可行的解决方案,不需要改变。好吧,我不认为一个开关
语句会增加很多工作。谢谢,我使用表达式是因为在运行时更容易更改单位。@MathewFoscarini为什么?它改变了什么?代码是可配置(分钟、小时、天等)功能的一部分。@MathewFoscarini好吧,这两种解决方案应该几乎相同,但无论如何,如果你找到一个可行的解决方案,就不需要改变。好吧,我不认为switch
语句会增加很多工作。