更新仅适用于最后一次方法调用

时间:2013-02-04 13:49:22

标签: c# sql-server-2008

我有一个非常简单的UPDATE语句,它可以正常工作但只能 一次调用。我在数据库中有很少的项目(FAI),我想改变负责人。

如果我想更改两个或更多责任人,则只会更改上一个项目的负责人。我没有任何错误消息。所有值都正确发送到更新查询,但查询不会将其发送到数据库。

public void updateFaiUBazu(string orderNumber, FAI fai, int serialNumber)
{
    konekcija.Open();
    MessageBox.Show(fai.Reviewer);
    komanda = new SqlCommand("
        update FAI set 
            AircraftFK = @AircraftFK, GlassFK = @GlassFK, PartNumber = @PartNumber, 
            SerialNumber = @SerialNumber, ReportNumber = @ReportNumber, 
            Reviewer = @Reviewer, Comment = @Comment, DateTime = @DateTime, 
            Iges = @Iges, IgesName = @IgesName, Status = @Status 
            where 
                 AircraftFK = " + fai.AircraftFK1 + 
                 " and GlassFK = " + fai.GlassFK1 +
                 " and SerialNumber = " + serialNumber, 
         konekcija);
    try
    {
        komanda.Parameters.Clear();
        komanda.Parameters.AddWithValue("@AircraftFK", fai.AircraftFK1);
        komanda.Parameters.AddWithValue("@GlassFK", fai.GlassFK1);
        // komanda.Parameters.AddWithValue("@OrderNumberFK", fai[i].OrderNumerFK);
        komanda.Parameters.AddWithValue("@PartNumber", fai.PartNumber);
        komanda.Parameters.AddWithValue("@SerialNumber", fai.SerialNumber);
        komanda.Parameters.AddWithValue("@ReportNumber", fai.ReportNumber);
        komanda.Parameters.AddWithValue("@Reviewer", fai.Reviewer);
        komanda.Parameters.AddWithValue("@Comment", fai.Comment);
        komanda.Parameters.Add("@DateTime", fai.DateAndTime);  

        if (fai.IgesFile.Length != 0)
        {
            komanda.Parameters.AddWithValue("@Iges", fai.IgesFile);
        }
        else
        {
            komanda.Parameters.Add("@Iges", SqlDbType.VarBinary, -1);
            komanda.Parameters["@Iges"].Value = DBNull.Value;
        }

        if (string.IsNullOrEmpty(fai.IgesName))
        {
            komanda.Parameters.Add("@IgesName", fai.IgesName).Value = DBNull.Value;
        }
        else
        {
            komanda.Parameters.AddWithValue("@IgesName", fai.IgesName);
        }

        komanda.Parameters.AddWithValue("@Status", "Not Tested");

        komanda.ExecuteNonQuery();

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
    konekcija.Close();
}

这可能是SqlServer更新语句的一些限制吗?

1 个答案:

答案 0 :(得分:0)

按照几个步骤来解决您的问题。

  1. 记录您的更新查询。创建后的JUst。这将告诉您在循环调用时是否真正执行了更新。
  2. 如果记录了所有更新,请将它们复制到SSMS查询窗口并按顺序逐个执行。如果有任何方式查询正在形成,或者在导致问题的其中一个参数中存在任何特定值,这将为您提供核心思路。这也可以帮助您确定上述@Steve指定的问题是否存在。