作为一般性问题,我想问一下,什么会导致更新 sql 命令在表中不进行任何更改而不给出任何错误?
现在更具体地说,我有一个没有错误的更新,所有变量都包含正确的值,至少有一个值与表中的值不同,表中存在 WHERE 子句中的值并且没有给出错误。那么可能出了什么问题呢?
我正在使用与 MS Access 2010 的 OleDB 连接的 Microsoft Visual Studio 2012(更准确地说是 .accdb 文件)这是代码:
public int updateCert(Calibracao cal, string certificadoAnterior)
{
OleDbConnection l = OleDbConnectionDAO.createConnection();
int result = 0;
try
{
l.Open();
OleDbCommand cmd = l.CreateCommand();
cmd.Parameters.Add(new OleDbParameter("@data", cal.Data));
cmd.Parameters.Add(new OleDbParameter("@entidade", cal.EntidadeCal));
cmd.Parameters.Add(new OleDbParameter("@observacao", cal.Observacao));
cmd.Parameters.Add(new OleDbParameter("@certificado", cal.Certificado));
cmd.Parameters.Add(new OleDbParameter("@resultado", cal.Resultado));
cmd.Parameters.Add(new OleDbParameter("@selecionar", cal.Selecionar));
cmd.Parameters.Add(new OleDbParameter("@certificadoAnterior", certificadoAnterior));
cmd.CommandText = "UPDATE [Movimento Ferramentas] SET " +
"[Data saida] = @data, " +
"[Entidade] = @entidade, " +
"Estado = 'Calibração', " +
"[Observações1] = @observacao," +
"Certificado = @certificado, " +
"Resultado = @resultado " +
"WHERE Certificado = @certificadoAnterior";
result = cmd.ExecuteNonQuery();
l.Close();
}
catch (Exception ex)
{
l.Close();
System.Diagnostics.Debug.WriteLine("DAO Exception: " + ex.Message);
return result;
}
return result;
}
编辑:更正了 SET,问题仍然存在
更新:问题通过老式调试解决了所有问题,然后在当时添加了一个字段。我不知道到底出了什么问题,但它最终起作用了。如果它对其他人有帮助,这就是代码的最终结果:
cmd.Parameters.Add(new OleDbParameter("@entidade", cal.EntidadeCal));
cmd.Parameters.Add(new OleDbParameter("@data", cal.Data));
cmd.Parameters.Add(new OleDbParameter("@certificado", cal.Certificado));
cmd.Parameters.Add(new OleDbParameter("@resultado", cal.Resultado));
cmd.Parameters.Add(new OleDbParameter("@observacao", cal.Observacao));
cmd.Parameters.Add(new OleDbParameter("@certificadoAnterior", certificadoAnterior));
cmd.CommandText = "UPDATE [Movimento Ferramentas] SET " +
"[Entidade] = @entidade, " +
"[Data saida] = @data, " +
"Certificado = @certificado, " +
"Resultado = @resultado, " +
"[Observações1] = @observacao " +
"WHERE Certificado = @certificadoAnterior";