- PR -

DBのnull値をチェックする方法について

1
投稿者投稿内容
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2003-02-22 13:06
いつも勉強させて頂いております。
OleDbDataReaderを使用して、DBへの接続をする際に、
SELECT文の条件で値が帰ってくる場合と空の場合があ
ります。
それをOleDbDataReaderを使用してDataListにバイン
ドさせて表示し、問題は無いのですが、空の時には別な
処理を行おうと思います。

OleDbDataReaderを使用して、値が取れたかどうかを
判別する方法を教えてください。
どうしても自分では解らず、

while(OleDbDataReader.Read()){
 string Data=OleDbDataReader.GetValue(1).ToString();
}

などとやり、Dataに第一列目の値が入っているかどうか判別
していますが、もっと他に効率の良い方法があるのではないか
と思っています。

よろしくご教授ください。





べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2003-02-22 14:59
ご質問の内容は、列要素のnullのチェックのことでなく、行そのものが存在しているか
どうかということですよね。

であるとすれば、DataListコントロールにデータをバインド後、Itemsプロパティの
Countプロパティの値をみて、0なら行なし1以上なら行が存在していると判断すれば
よいと思われます。


[ メッセージ編集済み 編集者: べーちゃん 編集日時 2003-02-22 15:27 ]
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2003-02-22 17:42
ご返答ありがとうございます。

その通りでして、行そのものが存在するかどうかを
チェックしたいのです。

DataListを使用する方法につきましては、実はこれを
回避したいが為に色々画策していまして、DataListに
バインドする前にチェックする方法はやはり無理なので
しょうか?

今後もよろしくご教授ください。





Valhalla
ベテラン
会議室デビュー日: 2002/09/03
投稿数: 53
投稿日時: 2003-02-23 03:52
DataReaderは実際に読んでみるまでは何もわからないようなので、
結果0件が多い場合はあらかじめselect countで件数を数えてみるか、
あるいはスタンダードにDataReaderやめてDataSetを使うのが妥当では
ないでしょうか。

引用:

while(OleDbDataReader.Read()){
 string Data=OleDbDataReader.GetValue(1).ToString();
}




一度Read()してしまうと、DataListの表示で1つ足りなくなりますよね。
whileしているということは自分でバッファリングしているということ
でしょうか。とするとDataSetと大差ないような・・・
ターキッシュ
大ベテラン
会議室デビュー日: 2003/01/15
投稿数: 126
投稿日時: 2003-02-24 13:05
Valhallasさんご返答ありがとうございました。

やはり無茶なことをやろうとしてたようですね。
DataReaderの方をDataSetより優先して使おうと思い
やってきましたが、確かにCountのSQL文と通常のSQL文
の二回DataReaderを使用するより、一度のDataSetの方
がパフォーマンスは良さそうですね。

だけど、実際の所どうなんでしょうね?

今後もよろしくご教授ください。

1

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