IsDBNULL関数とDBNULL型の意味


むらちゃん  2004-08-16 23:43:44  No: 115639

IsDBNull関数についてです。
IsDBNULL関数をMSDNオンラインで調べたんですが
いまいち意味がわかりませんでした涙

ソース上で
If IsDBNULL(wk_DBData) = false Then
  〜〜〜〜
EndIf
とあったんです。

ここに改造をかけようとしたんですが
If文の判断に困ってしまいました。

①IsDBNull(wk)とすると
どんなときに  true/falseの値を返すのでしょうか?
単純に  NULLかどうかの判断ではないと思うのですが
よくわかりません。

②DBNull型とは何なんでしょうか?

ISDBNULL関数
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vblr7/html/vafctisnull.asp
DBNullクラス
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdbnullclasstopic.asp

大変申し訳ありませんが
よろしくお願いいたします。


特攻隊長まるるう  2004-08-17 00:30:40  No: 115640

>1. IsDBNull(wk)とすると
>どんなときに  true/falseの値を返すのでしょうか?
1番目のリンク先(IsDBNull 関数)の例のままでしょう…
[解説]の通りの例ですね。

>Dim MyVar As Object
>im MyCheck As Boolean
変数が初期化されていないことを示す Nothing とは異なります。
>yCheck = IsDBNull(MyVar)   ' Returns False.
NULL 文字列と呼ばれる長さ 0 の文字列 ("") とも異なります。
>yVar = ""
>yCheck = IsDBNull(MyVar)   ' Returns False.
System.DBNull 値は、オブジェクト型 (Object) の式が参照不可能なデータまたは存在しないデータを表すかどうかを示します。
>yVar = System.DBNull.Value
>yCheck = IsDBNull(MyVar)   ' Returns True.
>sgBox(MyCheck)

>2. DBNull型とは何なんでしょうか?
2番目のリンク先(DBNull クラス)の[解説]のままでしょう…
ページの頭に
>DBNull クラス
>null 値を表します。
とも書いてありますし…
>単純に  NULLかどうかの判断ではないと思うのですが
>よくわかりません。
単純に NULL かどうかの判断なんじゃないでしょうか?(^^;)
むらちゃんさんの言う NULL ってどういう状態のことを
指してるんですか?


魔界の仮面弁士  2004-08-17 00:37:59  No: 115641

どこまで理解できているのかが読み取れませんでしたので、概要だけ書きます。

> (1) IsDBNull(wk)とすると
> どんなときに  true/falseの値を返すのでしょうか?

SDKに書かれている内容、そのままですよ。
wk が System.DBNullクラスのインスタンスであった場合に、True となります。

なお、Microsoft.VisualBasic.Information.IsDBNull() の内部実装は、VB的に表せば

   Public Shared Function IsDBNull(ByVal Expression As Object) As Boolean
      If (Expression Is Nothing) Then
         Return False
      End If
      If TypeOf Expression Is DBNull Then
         Return True
      End If
      Return False
   End Function

のようになっています。見ての通り、単純に DBNull かどうかを判断しているだけです。

> 単純に  NULLかどうかの判断ではないと思うのですが
この場合に判断しているのは、「NULL」ではなく「DBNull」です。

なお DBNull は、C#でいうところの null キーワードとは全く関係が無いので
混同しないようにしてください。(C# の null は、VB では Nothing に相当します)

> (2) DBNull型とは何なんでしょうか?
「データベースにおける Null値」を表したシングルトンクラスです。
VB6/VBAでいうところ Null キーワードに近い存在です。

# データベースでは、『何もない値』や『不明な値』を表現するために、
# NULL という値が利用されます。(空文字列 や 数値の0とは、意味が異なります)


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加