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 件のコメント:
コメントを投稿