자주 그리드 컨트롤에 연결된 DataTables를 다루어야하는데, 커스텀 업데이트는 항상 DBNull.Value와 관련된 많은 코드를 생성하는 것으로 보입니다. 여기 비슷한 질문을 보았지만 더 나은 답이 있어야합니다 생각 :DBNull.Value 다루기
What is the best way to deal with DBNull's
나는 내가 이동 어디 다음과 같은 코드로 끝날 수 있도록 나는 방법에 내 데이터베이스 업데이트를 캡슐화하는 경향이있다 찾을 것은 다시 업데이트에 대한 nullable 형식에 DBNull.value과 : 그냥 흐름의 예제 코드를 작동하지 않는
private void UpdateRowEventHandler(object sender, EventArgs e)
{
Boolean? requiresSupport = null;
if (grdMainLevel1.GetFocusedRowCellValue(colASRequiresSupport) != DBNull.Value)
requiresSupport = (bool)grdMainLevel1.GetFocusedRowCellValue(colASRequiresSupport);
AdditionalSupport.UpdateASRecord(year, studentID, requiresSupport)
}
internal static void UpdateASRecord(
string year,
string studentID,
bool? requiresSupport)
{
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@year", SqlDbType.Char, 4) { Value = year });
parameters.Add(new SqlParameter("@student_id", SqlDbType.Char, 11) { Value = studentID });
if (requiresSupport == null)
parameters.Add(new SqlParameter("@requires_support", SqlDbType.Bit) { Value = DBNull.Value });
else
parameters.Add(new SqlParameter("@requires_support", SqlDbType.Bit) { Value = requiresSupport });
//execute sql query here to do update
}
. 나는 객체 통과 또는 잠재적 인 캐스팅 문제를 "유형"을 사용하여 null로 곧바로 가져올 수 있음을 알지만 두 가지 모두 잠재적 인 오류를 숨기는 것처럼 보입니다. nullable 유형이있는 메소드의 유형 안전성을 좋아합니다.
유형 안전성을 유지하면서 더 깨끗한 방법이 있습니까?
강력하게 형식화 된 DataRow를 직접 사용하지 않는 이유는 무엇입니까? 당신은 DataTables를 사용해야만한다고 언급했습니다. 이러한 데이터 테이블을 강하게 입력하면 메서드에 데이터 행을 보낼 수 있습니다. 데이터 행은 이미 DBNull을 사용합니다. –