- - PR -
DBNull時の処理
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-02-03 10:55
いつも大変参考にさせていただいています。
開発言語:VB.NET(2003) データベース:Oracle9i DataAdapterでDataSetにデータを取得後DataRowに1レコードを入れて、 指定した列の値がNULLかつ、取得先のテーブルの列の型に合わせて処理を 分岐させたいのですがうまくいきません。 例えばこんな感じです↓ If myRow.Item(Index) Is DBNull.Value Then Select Case myRow.Item(Index).GetType.Name.ToLower Case "string" Console.WriteLine("String") Case "decimal" Console.WriteLine("Decimal") Case "date" Console.WriteLine("Date") End Select End If myRowはDataRowオブジェクトです。 これだと(当然ですが)型がDBNullになってしまい、Select Caseで分岐できません。 何かいい方法はないでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2004-02-03 11:00
“行[カラム数]”は、「値」そのものですから、DbNullですよね。でも、ここで欲しいのはその「列」の定義ではないですか?
列の定義は、Adapter.Fill直後にAdapter.FillScheme(スペルミスってたらごめん)を実行して取得します。取得後、columnsプロパティからアクセスします。 | ||||
|
投稿日時: 2004-02-03 11:55
返信ありがとうございます。
一つ質問なのですが、columnsプロパティは何のプロパティですか? DataRowですか? | ||||
|
投稿日時: 2004-02-03 12:28
確かDataTableかと DataSetからだと DataSet.Tables["テーブル名"].Columns かな? [ メッセージ編集済み 編集者: 無月 重造 編集日時 2004-02-03 12:31 ] | ||||
|
投稿日時: 2004-02-03 13:35
Jittaさん、無月 重造さん、ありがとうございました。
DataSet.Tables["テーブル名"].Columns["カラム数"].DataType.Name でうまくいきました。 また何かありましたらよろしくお願いします。 |
1