2011-01-26 4 views
2

판독기에서 데이터를 읽을 때 NullValueException이 발생했는지 여부에 관계없이 데이터베이스에서 null 값을 허용하는 각 매개 변수를 확인해야합니다. 특히 각 값을 별도의 시도/catch으로 확인해야합니다. 그 이유는 첫 번째 값이 null 인 다음 값을 구문 분석하기를 원하기 때문입니다. C#에서 일부 클래스에는 성공시 부울을 반환하는 tryParse (키, 출력 값) 함수가 있지만 Connector/NET에서는 찾지 못했습니다. 다음 진술을 단축 할 수있는 방법이 있습니까?Mysql Connector/NET에서 SqlNullValueException 검사를 생략하는 방법

Product product; 
try { 
    product = new Product(
     reader.GetString("product_id"), 
     reader.GetDateTime("starttime") 
     ); 
    try { 
     product.EndTime = reader.GetDateTime("endtime"); 
    } catch (System.Data.SqlTypes.SqlNullValueException) { } 
    try { 
     product.Description = reader.GetString("description"); 
    } catch (System.Data.SqlTypes.SqlNullValueException) { } 
    try { 
     product.Type = reader.GetString("type"); 
    } catch (System.Data.SqlTypes.SqlNullValueException) { } 
} catch (MySqlException ex) { 
    throw ex; 
} catch (Exception ex) { 
    throw ex; 
} 

답변

3

나는 보통이 패턴을 SqlDataReader와 함께 사용하며, MySQL Connector/Net과 동일해야한다고 생각합니다.

product.EndTime = reader["endtime"] as DateTime? ?? DateTime.MinValue; 
product.Description = reader["description"] as string; 
product.Type = reader["type"] as string; 
+0

너무 늦게 답변을 드려 죄송합니다. 그리고 이전 코드보다 훨씬 짧습니다. 감사. – lanoxx

2

MySqlDataReader에는 null 값을 확인하는 데 사용할 수있는 "IsDBNull (int i)"메서드가 있습니다.

+0

불행히도 나는 열 번호를 알아야하지만, 이름으로 열을 참조하고있다. – lanoxx

관련 문제