MySql在更新时添加值

时间:2013-05-31 20:48:33

标签: c# mysql

我有这个更新:

sql = "UPDATE table SET prioridade = @prioridade, situacao = @sit , responsavel = @resp , previsao_termino = @previsao, chamado_designado = @designado WHERE id = @id";

MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new MySqlParameter("@prioridade", MySqlDbType.Int32)).Value = ch.Prioridade_ID;
cmd.Parameters.Add(new MySqlParameter("@sit", MySqlDbType.Int32)).Value = ch.Situacao_ID;
cmd.Parameters.Add(new MySqlParameter("@resp", MySqlDbType.Int32)).Value = ch.Responsavel_ID;
cmd.Parameters.Add(new MySqlParameter("@previsao", MySqlDbType.Date)).Value = ch.Previsao_Termino;
cmd.Parameters.Add(new MySqlParameter("@designado", MySqlDbType.Int32)).Value = ch.Chamado_Designado;
cmd.Parameters.Add(new MySqlParameter("@id", MySqlDbType.Int32)).Value = ch.ID;
_dal.Executar(cmd); 

ch.Previsao_Termino的值等于31/05/2013,字段previsao_terminodate type。什么时候会update它会让我错误地说:

Wrong Value for the field previsao_termino 0031-05-2013.

00来自哪里?也许连接器?我将连接器更新为新版本,同时我将VisualStudio 2010更新为VisualStudio 2012,然后我改变了,我有很多问题u.u。

1 个答案:

答案 0 :(得分:0)

@EdGibbs提供的答案

使用MySqlCommand.Parameters作为其值传递的变量时,MUST与您设置参数的类型相同。例如

MySqlCommand.Parameter.Add(new MySqlParameter("@ParamName", MySqlDataType.DateTime)).value = dtValue  

变量dtvalue必须是DATETIME TYPE,如果像我一样使用string,那么你应该使用以下转换。

DateTime.ParseExact(ch.Previsao_Termino, 'dd/MM/yyyy', null)