SQL: обновление не влияет ни на одну строку

Я хочу обновить набор данных в таблице DB2/AS400.

Проблема в том, что если в списке параметров есть строковый параметр, команда не найдет строку для обновления.

Например: если я выполню команду только с номером компании, команда выполнится успешно. Если я запускаю команду с номером компании и номером объекта, команда не выполняется.

У кого-нибудь есть идеи?

IDbConnection cn = Tools.GetCnApp();

try
{
    StringBuilder sql = new StringBuilder(); 

    sql.AppendLine("UPDATE " + Tools.GetSchemeApp() + "/ChangeReasonAssignments");
    sql.AppendLine("  SET Confirmed = @CONF, Confirmed_By = @CONFBY, Confirmed_At = @CONFAT");
    sql.AppendLine("  WHERE Company = @CONO AND Facility = @FACI AND Department = @DEPT");
    sql.AppendLine("  AND Production_Group = @PRGR AND Manufacturing_Order = @ORDR AND Order_Operation = @OPER");
    sql.AppendLine("  AND Confirmed = 0");

    IDbCommand cmd = cn.CreateCommand();

    cmd.SetParameter("@CONO", this.CompanyNumber);
    cmd.SetParameter("@FACI", this.FacilityNumber);
    cmd.SetParameter("@DEPT", this.ProductionGroup.Department.Name);
    cmd.SetParameter("@PRGR", this.ProductionGroup.Name);
    cmd.SetParameter("@ORDR", this.ManufacturingNumber);
    cmd.SetParameter("@OPER", this.OperationNumber);
    cmd.SetParameter("@CONFBY", Base.User);
    cmd.SetParameter("@CONFAT", DateTime.Now.ToString());
    cmd.SetParameter("@CONF", 1);

    cmd.CommandText = sql.ToString();

    if (cmd.ExecuteNonQuery() > 0)
    {
    }

РЕДАКТИРОВАТЬ

Типы данных в базе данных:

  • Компания: INTEGER
  • Объект: VARCHAR
  • Отдел: VARCHAR
  • Production_Group: VARCHAR
  • Manufacturing_Order: INTEGER
  • Order_Operation: INTEGER

Типы данных в .NET:

  • CompanyNumber: int
  • FacilityNumber: String
  • Название отдела: Строка
  • ProductionGroup: Строка
  • Manufactororder: int
  • OrderOperation: int

Результаты sql.ToString():

UPDATE TSAEDBDEV/ChangeReasonAssignments SET Confirmed = @CONF, Confirmed_By = @CONFBY, Confirmed_At = @CONFAT WHERE Company = @CONO AND Facility = @FACI AND Confirmed = 0

1 ответ

Попробуйте установить строковые значения в ': cmd.SetParameter("@DEPT", "'" + this.ProductionGroup.Department.Name + "'");

Другие вопросы по тегам