一般的な質問として、update sql コマンドがテーブルを変更せずにエラーが発生する原因は何ですか?
より具体的には、エラーのない更新があり、すべての変数に正しい値が含まれており、テーブル内の値とは異なる値が少なくとも 1 つあり、WHERE 句の値がテーブルに存在し、エラーはありません。では、何がうまくいかないのでしょうか?
私は、MS Access 2010 (より正確には .accdb ファイル) への OleDB 接続を使用して Microsoft Visual Studio 2012 で作業しています。コードは次のとおりです。
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";