- - PR -
DBにNULLが入っている場合の処理方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-28 10:57
お世話になります。
DBのあるテーブル(基テーブルとします)からnvarchar型のデータを拾ってきて、その文字列を基にしてファイルのパスを生成し、そのファイル名の有無によって条件分岐させ、そのファイルパスをさらに加工して別のテーブルに格納する、ということをやろうとしています。 ここで問題がでてきたのですが、基テーブルからデータを引っ張るときに、その基テーブルの中にあるデータがnullだった場合に、GetString(0)などで引っ張ろうとしても、 「データが Null です。このメソッド、またはプロパティは Null 値で呼び出せません。」 というエラーがでてきます。それならと思い、次のような条件文を作りました。1列目にnullが入っているとすると、 if (File.Exists("http://192.168.0.1/test/" + sqlReader.GetString(0) + ".txt")) とか、 if (sqlReader.GetString(0) != null) といった感じでいくつか作ってみましたが、これでもやっぱりGetStringのところでnullを呼び出せないと言われ、とまってしまいます。 そこで質問ですが、GetStringに似たような感じでDBにnullが入っていても引っ張り出して変数に格納できる方法や、もしくは引っ張り出さなくても条件文で使えるような方法はありませんでしょうか? ご回答よろしくお願いいたします。 _________________ ◇◇◇ 社内SEを兼務する文系プログラマです。 ◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。 ◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ | ||||||||
|
投稿日時: 2006-11-28 11:03
こんにちは。
念のため確認です。 NZ関数についてはご存知ですよね? #タイトルだけ見て反応してしまいましたorz --以下追記 NZはAccess(jet)でしたね。 SQLServerならISNULL関数でした。失礼しました。 [ メッセージ編集済み 編集者: 未記入 編集日時 2006-11-28 11:45 ] | ||||||||
|
投稿日時: 2006-11-28 11:05
いくつか考えられますが string strHoge; if ( sqlReader.GetValue(0) != null ) strHoge = sqlreader.GetString(0); else strHoge = ""; はどうでしょうか? _________________ -------------------------------------------- HIRO's.NET VB.NETとC#のTipsを掲載しています [ メッセージ編集済み 編集者: HIRO 編集日時 2006-11-28 11:21 ] | ||||||||
|
投稿日時: 2006-11-28 11:11
DBNull ?
http://msdn2.microsoft.com/ja-jp/library/system.dbnull(VS.80).aspx _________________ かるあ のメモ と スニペット | ||||||||
|
投稿日時: 2006-11-28 11:13
Null値を扱いたいなら、2003以前ならSystem.Data.SqlTypesのクラスを使う。2005以降ならNullable Typesを使う。普通の変数にはNull値を格納できないので、「Null 値で呼び出せません」となる。
| ||||||||
|
投稿日時: 2006-11-28 11:23
テーブルからデータを取得する時点でISNULL関数を使う方法もあります。
#MSSQL=SQLServerですよね? | ||||||||
|
投稿日時: 2006-11-28 11:44
みなさんご回答ありがとうございます。
確かめるのにお時間がかかりそうですので、 全て検証してから、再度返答させていただきたいと思います。 _________________ ◇◇◇ 社内SEを兼務する文系プログラマです。 ◇◇◇ WinXP VisualStudio2005(C#メイン) MS・SQLServer とかを使っています。 ◇◇◇ 周囲にプログラマがいないので、みなさんだけが頼りですヽ(`Д´;ノ | ||||||||
|
投稿日時: 2006-11-28 12:55
こうでしょうね。
【追記】 DB が何か明記されていないので、クライアント側で判定する方法を。 [ メッセージ編集済み 編集者: きくちゃん 編集日時 2006-11-28 13:05 ] |