vb.net
2016-10-25 5 views -1 likes 
-1

おはようございます。私は以下のコードで助けが必要です。新しいのMemoryStreamとして画像列がNULLかどうかを確認します。VB.NET

薄暗いストリーム()私はそれがエラーキャストの前にはnullかどう識別するために、メッセージボックスを置きたい

 connect() 
     Dim command As New SqlCommand("SELECT image FROM tblHouseholdMembers WHERE id= '" & lvmem.FocusedItem.Text & "'", cn) 
     Dim image As Byte() = DirectCast(command.ExecuteScalar(), Byte()) --> 'Error message of null image 
     stream.Write(image, 0, image.Length) 
     cn.Close() 
     Dim bitmap As New Bitmap(stream) 
     pbProfilePic.Image = bitmap 

+0

申し訳ありませんが、私が望むのは、ユーザーがヌル画像のメンバーを選択したことをユーザーに伝えることです。あなたが私を理解してくれるといいなあ:) –

+0

質問をより明確にしたい場合は、質問の下で** edit **リンクを使用して質問を編集してください。それはコメントのためのものではありません。 –

+0

すみません@ZevSpitz次回はそうするでしょう。 –

答えて

2

の代わりにDirectCastメソッドを使用して、TryCastを使用して、鋳造結果は何もありませんかどうかを確認:

Dim image As Byte() = TryCast(command.ExecuteScalar(), Byte()) 
if image isnot nothing then 
    stream.Write(image, 0, image.Length) 
    cn.Close() 
    Dim bitmap As New Bitmap(stream) 
    pbProfilePic.Image = bitmap 
else 
    'Error message here 
end if 
+0

ありがとうございます。それは正常に働いた。 –

+0

@YevrahAradnopこの回答があなたの質問を解決した場合は、それを受け入れます(回答の横にあるチェックマークを使用)。 –

+0

@AugustoQ更新クエリを使用してイメージを挿入するにはどうすればいいか知りたい。 Null Imageでいくつかの情報があるので、私は更新ボタンをクリックするとイメージを置く必要があります。もう一度thnx –

0

バックデータベースからのフィールドがnullの場合、直接テストする方法は次のとおりです。

if ValueFromDb is System.DbNull.Value then 
    ' whatever you want to do in that case 

私がVBを最初に学習していたときに私が本当に混乱していたことは、DB読み込みのnull値がNothingと等しくないことです。これはNothingではなく、System.DbNull.Valueです。

public shared function denull(value as object, defalt as object) 
    if value is system.dbnull.value then 
    return defalt 
    else 
    return value 
end function 

その後、私は、私はこの機能でDBから読み込んすべての値をラップ:

私のプロジェクトのほとんどは、これらの日は、私のような何かが言う私は「denull」と呼ぶ小さな関数を記述します。これにより、多くのコードを節約できます。

for each row in mydataset.tables(0).rows 
    foo=denull(row("foo"),"") 
    bar=denull(row("bar"),0) 
    plugh=denull(row("plugh"),nothing) 
    ... etc ... 
+0

しかし@AugustoQのコードは完璧に動作します。しかし、おそらく私はSystem.DbNull.Valueの試してみましょう –

+0

両方のコードは完璧です。 –

+0

私はAugustoQのソリューションがうまくいかないことを意味するわけではありませんでした。私はもっと一般的なケースを提供しようとしていました。彼の解決策はdbnull.valueがbyte()型でなく、キャストが失敗するため動作します。 ExecuteScalarの戻り値と何も比較しないが、TryCastの戻り値は比較しないことに注意してください。 – Jay

関連する問題