ADO.NETで列の桁数を得る方法
たとえば、10ケタで小数点以下が2ケタの数値列の情報を得るには下記のようにする。
- SqlCommand cmd = new SqlCommand();
- cmd.Connection = cn; // コネクション
- cmd.CommandText = "SELECT cast(1.234 as numeric(10,2)) [v]";
- SqlDataReader rd= cmd.ExecuteReader(CommandBehavior.KeyInfo);
- DataTable sc = rd.GetSchemaTable();
すると、scは以下のようになる。ちゃんと10と2がある。
同じことを非接続のdataTableでもやりたかったのだが、できなかった。DataTableからはSqlDataReader のオブジェクトを作れない。
- SqlDataAdapter ad = new SqlDataAdapter();
- ad.SelectCommand = cmd;
- DataTable dt = new DataTable();
- ad.Fill(dt);
- DataTableReader rd = dt.CreateDataReader();
- DataTable sc = rd.GetSchemaTable();
うまい方法はないものかしら。
コメント
コメントを投稿