代碼如下:public int UpdateByParameters(BookingRecords records)//BookingRecords是一個自定義的類
{
   string SQL = "UPDATE [QntyBooking] SET [Qnty]=?,[LOT]=?,[STYLE]=? WHERE [BKID]=?";//我用的是Access數據庫
   OleDbCommand command = new OleDbCommand(SQL,cnn);//cnn數據庫連接字串沒有問題.   OleDbParameter param_ID = new OleDbParameter("@BKID",OleDbType.Integer,32,"BKID");
   OleDbParameter param_QNTY = new OleDbParameter("@Qnty",OleDbType.Integer,16,"Qnty");
   OleDbParameter param_LOT = new OleDbParameter("@LOT",OleDbType.Char,20,"LOT");
   OleDbParameter param_STYLE = new OleDbParameter("@STYLE",OleDbType.Char,20,"STYLE");  if(command.Connection.State == ConnectionState.Closed)
  {
     command.Connection.Open();
   }   OleDbTransaction trans = command.Connection.BeginTransaction();
   command.Transaction    = trans;
   
   command.Parameters.Clear();
   
   command.Parameters.Add(param_ID).Value = records._QBID;
   command.Parameters.Add(param_QNTY).Value = records.QNTY;
   command.Parameters.Add(param_LOT).Value = records.LOT;
   command.Parameters.Add(param_STYLE).Value = records.STYLE;
   //我跟蹤過records中的這幾個字段值,沒有問題.   int counter = 0;
   try
   {
       counter = command.ExecuteNonQuery();//問題出在這里:counter一直是0,也就是被更新的記錄數是0條.
       trans.Commit();
    }
    catch(System.Exception ex)
    {
       tempModule.Error = ex.Message;
       trans.Rollback();
       counter = -1;
     }
     finally
     {
        command.Connection.Close();
      }
}
程序并沒有報錯,command.ExecuteNonQuery()正常執行,trans.Commit()也正常執行,catch不到任何錯誤,請問為什么更新動作沒有執行,所更新的記錄數為0呢?

解决方案 »

  1.   

    你debug看一下,最后的sql正确不正确,应该sqlyou问题
      

  2.   

    把语句和参数值 放到access执行一下
      

  3.   

    将sql语句返回 输出再看看
      

  4.   

    暈了.樓上三位大哥,我試過把SQL語句值取出來并把Parameters的值給代入進去,在Access里執行后成功更新,可是在程序中就不行,這是怎么回事啊?!
      

  5.   

    我知道了!command.Parameters.Add參數時要按SQL語句中占位符的順序來添加,這樣就可以了,謝謝幾位.