- PR -

ODP+DataSetのデータ型

1
投稿者投稿内容
パンダ
ベテラン
会議室デビュー日: 2004/03/24
投稿数: 59
投稿日時: 2004-05-19 18:04
C#でOrcle+ODP.NETで開発しています。
以下のサンプルでテストしているのですが、Oracleのデータ型と
DataRowオブジェクトのデータ型の対応が分かりません。

Oralce上の定義は以下のようにしています。
 商品名1  varchar(50)
 安全係数 NUMBER(6,3)
 調達期間 NUMBER(3)
 仕入単価 NUMBER(10,2)

アプリケーションでは以下のような型で返ってきます。
 商品名1  string
 安全係数 Single
 調達期間 Int16
 仕入単価 Double

1.商品名や調達期間は理解できるのですが、安全係数や仕入単価が
 なぜ、SingleやDoubleを使用するのか分かりません。
 自動的に型変換しているのでしょうか?
2.出来ればDecimalで取得したいのですが可能なのでしょうか?
 どのように設定すればいいのでしょうか?

 OracleConnection Conn = new OracleConnection();
 Conn.ConnectionString = "Data Source=ICS;User Id=ICS;Password=ICS;";
 Conn.Open();

 string strSQL = "SELECT 商品名1, 安全係数, 調達期間, 仕入単価 FROM M_商品マスタ ";
 OracleCommand Cmd = new OracleCommand();
 Cmd.Connection = Conn;
 Cmd.CommandText = strSQL;

 OracleDataAdapter da = new OracleDataAdapter(Cmd);
 DataSet ds = new DataSet();
 da.Fill(ds, "tbl");
 DataTable tbl = ds.Tables["tbl"];

 for(int i=0; i<tbl.Rows.Count; i++)
 {
  DataRow dr = tbl.Rows[i];
  Console.Write(dr["商品名1"]);
  Console.Write(dr["安全係数"]);
  Console.Write(dr["調達期間"]);
  Console.WriteLine(dr["仕入単価"]);
 }

よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)