IDataReader を使うときそのままだとこんな感じだと思うんですが、
int intValue = (int) reader["int_field"]; string strValue = (string) reader["str_field"];
NULL のときとかちょっと面倒です。(なんで IDataReader.IsDBnull には IsDBNull(string name) みたいなオーバーロードがないんだろう
Nullable<int> nullableValue = null;
if (!reader.IsDBNull(reader.GetOrdinal("nullable_field")))
{
nullableValue = (int) reader["nullable_field"];
}
なのでこんな風にできるようにしたい。
int intValue = reader.Field<int>("int_field");
string strValue = reader.Field<string>("str_field");
Nullable<int> nullableValue = reader.Field<Nullable<int>>("nullable_field");
int ifNullValue = reader.Field<int>("if_null_field", ifNull:-1);
3.5以上なら拡張メソッド作ればいいんですが... 残念ながら 2.0 な環境だったのでこんなヘルパクラスを作って実装しました。
まあ実際は VB.NET なんですが... これで IDataReader が少し使いやすくなりました。
0 件のコメント:
コメントを投稿