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 + "'");