다른 속성을 가진 클래스가 있습니다.C# check insert 값이 비어 있거나 빈 문자열로 덮어 쓰기 때문에 null입니다.
그러나 항상 채워지지는 않습니다. 예를 들어 :
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);
이 어떻게 널을 삽입합니까?
(확인 : 새 값이? "난 그냥 이전 값을 오른쪽으로 덮어 쓰기
이전 행 "로, null의 경우 내가 이전 값을 유지하려면 행을 업데이트 할 때) "ABC"를 " ABC ","ABC ""ABC "
업데이트 행 : "문자열 ","문자열 ""ABC ","문자열 "
AND NOT : "문자열 ","문자열 "" ""문자열 "
수정 : 내가 근래에 두 테이블. 첫 번째 테이블에 삽입을 사용하고 속성 (일종의 임시 저장)을 추가 한 다음이 테이블 행을 '실제'테이블을 업데이트하기 위해 가져옵니다. 표 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();
}
당신이 NULL 값을 전달하고자하는 매개 변수
(:
또는 당신은 NULL과 빈 문자열을 모두 무시하려면 이전) 귀하의 요구 사항에 따라 업데이 트하십시오. 가장 좋은 것은 SP를 사용하는 것입니다. SP를 사용하면 값을 다시 얻은 다음 확인을 수행하는 대신 null 업데이트를 거부합니다. – Zenwalker
내가 이해하고 있는지 확인하는 것.INSERT null이 좋으면 UPDATE null이 좋지 않을 때? – Steve
귀하의 진술은 INSERT 문입니다. 이 경우 이전 값이 없습니다! –