Как я могу записать NULL в базу данных с C# - PullRequest
2 голосов
/ 06 марта 2020

У меня есть стол А и стол Б. Таблица B обновляется каждый день в соответствии с изменениями таблицы. в таблице 2 сущности, такие как: SCD_DEPT (String Value) и LEAVE_DATE (DateTime) и в таблице пустые значения ищут "NULL" для SCD_DEPT и LEAVE_DATE, но в таблице B пустые значения SCD_DEPT выглядят пустыми. Я хочу, чтобы пустые значения SCD_DEPT выглядели "NULL" в таблице B

, это моя часть ОБНОВЛЕНИЯ в моем коде

var employeequery = $"{UpdateQuery} EMAIL=@EMAIL, GID = @GID, SAP_COMPANY_CODE=@SAP_COMPANY_CODE, FIRST_NAME=@FIRST_NAME, LAST_NAME = @LAST_NAME, COST_CENTER=@COST_CENTER, MANAGER_EMPLOYEE_ID=@MANAGER_EMPLOYEE_ID, SCD_DEPT=@SCD_DEPT, LEAVE_DATE= @LEAVE_DATE, START_DATE=@START_DATE, CONTRACT_TYPE=@CONTRACT_TYPE, MONTHLY_WORKING_DAY=@MONTHLY_WORKING_DAY, STATUS=@STATUS, LAST_UPDATE_TIME=@LAST_UPDATE_TIME  WHERE EMPLOYEE_ID = @EMPLOYEE_ID";
            var command = DataAccess.Instance.CreateCommand(employeequery);
            command.Parameters.AddWithValue("@EMPLOYEE_ID", entity.Id);
            command.Parameters.AddWithValue("@EMAIL", entity.Email);
            command.Parameters.AddWithValue("@GID", entity.Gid);
            command.Parameters.AddWithValue("@SAP_COMPANY_CODE", entity.SapCompanyCode);
            command.Parameters.AddWithValue("@FIRST_NAME", entity.FirstName);
            command.Parameters.AddWithValue("@LAST_NAME", entity.LastName);
            command.Parameters.AddWithValue("@COST_CENTER", entity.CostCenterName);
            command.Parameters.AddWithValue("@MANAGER_EMPLOYEE_ID", entity.ManagerEmployeeID);
            if(entity.ScdDept == "  ")
            {
                command.Parameters.AddWithValue("@SCD_DEPT", DBNull.Value);
            }
            else
            {
                command.Parameters.AddWithValue("@SCD_DEPT", entity.ScdDept);
            }

                command.Parameters.AddWithValue("@LEAVE_DATE", entity.LeaveDate);
            command.Parameters.AddWithValue("@START_DATE", entity.StartDate);
            command.Parameters.AddWithValue("@CONTRACT_TYPE", entity.ContractType);
            command.Parameters.AddWithValue("@MONTHLY_WORKING_DAY", entity.MonthlyWorkingDay);
            command.Parameters.AddWithValue("@STATUS", entity.Status);
            command.Parameters.AddWithValue("@LAST_UPDATE_TIME", entity.LastUpdateTime);

Я пытаюсь, если еще для SCD_DEPT (строковое значение), но это не работает .Хочу более эффективный и рабочий способ. Спасибо за вашу помощь.

Ответы [ 4 ]

1 голос
/ 06 марта 2020

Использование string.IsNullOrWhiteSpace(entity.ScdDept?.Trim())

1 голос
/ 06 марта 2020

Полагаю, вы не связываете entity.ScdDept с "@SCP_DEPT" перед проверкой, или она создается где-то выше? Если это так, вы должны изменить if(entity.ScdDept == " ") на if(entity.ScdDept == null). Попробуйте пожалуйста и напишите обратно.

0 голосов
/ 06 марта 2020

Я решил эту проблему так:

var employeequery = $"{UpdateQuery} EMAIL=@EMAIL, GID = @GID, SAP_COMPANY_CODE=@SAP_COMPANY_CODE, FIRST_NAME=@FIRST_NAME, LAST_NAME = @LAST_NAME, COST_CENTER=@COST_CENTER, MANAGER_EMPLOYEE_ID=@MANAGER_EMPLOYEE_ID, SCD_DEPT=@SCD_DEPT, LEAVE_DATE= @LEAVE_DATE, START_DATE=@START_DATE, CONTRACT_TYPE=@CONTRACT_TYPE, MONTHLY_WORKING_DAY=@MONTHLY_WORKING_DAY, STATUS=@STATUS, LAST_UPDATE_TIME=@LAST_UPDATE_TIME  WHERE EMPLOYEE_ID = @EMPLOYEE_ID";
            var command = DataAccess.Instance.CreateCommand(employeequery);
            command.Parameters.AddWithValue("@EMPLOYEE_ID", entity.Id);
            command.Parameters.AddWithValue("@EMAIL", entity.Email);
            command.Parameters.AddWithValue("@GID", entity.Gid);
            command.Parameters.AddWithValue("@SAP_COMPANY_CODE", entity.SapCompanyCode);
            command.Parameters.AddWithValue("@FIRST_NAME", entity.FirstName);
            command.Parameters.AddWithValue("@LAST_NAME", entity.LastName);
            command.Parameters.AddWithValue("@COST_CENTER", entity.CostCenterName);
            command.Parameters.AddWithValue("@MANAGER_EMPLOYEE_ID", entity.ManagerEmployeeID);
            if (entity.ScdDept == "") command.Parameters.AddWithValue("@SCD_DEPT", DBNull.Value);
            else command.Parameters.AddWithValue("@SCD_DEPT", entity.ScdDept);
            if (entity.LeaveDate == DateTime.MaxValue) command.Parameters.AddWithValue("@LEAVE_DATE", DBNull.Value);
            else command.Parameters.AddWithValue("@LEAVE_DATE", entity.LeaveDate);
            command.Parameters.AddWithValue("@START_DATE", entity.StartDate);
            command.Parameters.AddWithValue("@CONTRACT_TYPE", entity.ContractType);
            command.Parameters.AddWithValue("@MONTHLY_WORKING_DAY", entity.MonthlyWorkingDay);
            command.Parameters.AddWithValue("@STATUS", entity.Status);
            command.Parameters.AddWithValue("@LAST_UPDATE_TIME", entity.LastUpdateTime);

спасибо за ваше время.

0 голосов
/ 06 марта 2020

Попробуйте это:

var employeequery = $"{UpdateQuery} EMAIL=@EMAIL, GID = @GID, SAP_COMPANY_CODE=@SAP_COMPANY_CODE, FIRST_NAME=@FIRST_NAME, LAST_NAME = @LAST_NAME, COST_CENTER=@COST_CENTER, MANAGER_EMPLOYEE_ID=@MANAGER_EMPLOYEE_ID, SCD_DEPT=NULLIF(@SCD_DEPT, ''), LEAVE_DATE= @LEAVE_DATE, START_DATE=@START_DATE, CONTRACT_TYPE=@CONTRACT_TYPE, MONTHLY_WORKING_DAY=@MONTHLY_WORKING_DAY, STATUS=@STATUS, LAST_UPDATE_TIME=@LAST_UPDATE_TIME  WHERE EMPLOYEE_ID = @EMPLOYEE_ID";

var command = DataAccess.Instance.CreateCommand(employeequery);
    command.Parameters.AddWithValue("@EMPLOYEE_ID", entity.Id);
    command.Parameters.AddWithValue("@EMAIL", entity.Email);
    command.Parameters.AddWithValue("@GID", entity.Gid);
    command.Parameters.AddWithValue("@SAP_COMPANY_CODE", entity.SapCompanyCode);
    command.Parameters.AddWithValue("@FIRST_NAME", entity.FirstName);
    command.Parameters.AddWithValue("@LAST_NAME", entity.LastName);
    command.Parameters.AddWithValue("@COST_CENTER", entity.CostCenterName);
    command.Parameters.AddWithValue("@MANAGER_EMPLOYEE_ID", entity.ManagerEmployeeID);
    command.Parameters.AddWithValue("@SCD_DEPT", entity.ScdDept);
    command.Parameters.AddWithValue("@LEAVE_DATE", entity.LeaveDate);
    command.Parameters.AddWithValue("@START_DATE", entity.StartDate);
    command.Parameters.AddWithValue("@CONTRACT_TYPE", entity.ContractType);
    command.Parameters.AddWithValue("@MONTHLY_WORKING_DAY", entity.MonthlyWorkingDay);
    command.Parameters.AddWithValue("@STATUS", entity.Status);
    command.Parameters.AddWithValue("@LAST_UPDATE_TIME", entity.LastUpdateTime);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...