У меня есть класс с разными атрибутами, допустим.
Object.attributeA
Object.attributeB
Object.attributeC
Object.attributeD
Однако они не всегда заполнены. Например:
Object.attributeA = "string";
Object.attributeB = "string";
Object.attributeC = null;
Object.attributeD = "string";
Моя инструкция вставки выглядит следующим образом:
string sql = @"INSERT INTO TABLE
(
attributeA,
attributeB,
attributeC,
attributeAD
)
values
(
@attributeA,
@attributeB,
@attributeC,
@attributeAD
);";
SqlParameter[] parameters =
{
new SqlParameter("@attributeA", SqlDbType.NVarChar) {Value = attributeA},
new SqlParameter("@attributeB", SqlDbType.NVarChar) {Value = attributeB},
new SqlParameter("@attributeC", SqlDbType.NVarChar) {Value = attributeC},
new SqlParameter("@attributeD", SqlDbType.NVarChar) {Value = attributeD}
};
ExecuteNoNQuery(sql, parameters);
Как мне вставить ноль?
(Для подтверждения: когда я обновляю строку, я хочу сохранить старое значение, если новое значение равно нулю, с помощью "" я просто перезаписал старое значение, верно?)
Старый ряд
"abc" "abc" "abc" "abc"
Обновить строку:
"string" "string" "abc" "string"
И НЕ:
"строка" "строка" "" "строка"
EDIT:
У меня есть две таблицы. Я использую вставку для первой таблицы, добавляю атрибуты (что-то вроде временного сохранения) И ТОГДА я беру эту строку таблицы для обновления строки «реальной» таблицы. Атрибуты в таблице 1 всегда больше реальной таблицы. Вот почему после вставки "" я просто перезаписываю атрибут в реальной таблице.
Моя функция обновления выглядит примерно так:
public void UpdateBatchToRealTable(Class, int id)
{
// Current Batch
DataTable dt = DAL.Batch(id);
// table 1 (temp table) -> table 2 (real table)
DataRow row = dt.Rows[0];
Object.attributeA = row["attributeA"].ToString();
Object.attributeB = row["attributeB"].ToString();
Object.attributeC = row["attributeC"].ToString();
Object.attributeD = row["attributeD"].ToString();
}