0

私のコードは基本的にこれです:

//get connection 
//make connection string which returns one value
//open connection
string picture = command.ExecuteScalar().ToString();
//close connection

クエリが null を返す可能性があります。では、null かどうかを調べて、それを文字列に格納するにはどうすればよいでしょうか? 文字列が例外をスローするため、上記で使用したものは機能しません。では、値を一時的に何かに保存してから、文字列に戻すことはできますか? 2 つの ExecuteScalars を実行して、最初に null かどうかを確認してから保存したくありません。

4

2 に答える 2

0

私は通常これを行います:

string picture = null;
object picTemp = command.ExecuteScalar();
if (picTemp != null && picTemp != System.DBNull.Value) {
   picture = (string)picTemp;
}

picTempnull結果が返されなかった場合になります。結果がSystem.DBNull.Value返されたが、結果の値が null の場合です。

于 2013-04-29T20:34:04.247 に答える
0

あなたがする必要があるのは、以下をチェックすることだけですnull:

string picture = command.ExecuteScalar() as string;
if(picture == null)
{
    // Handle the NULL case
}

// Do something with picture...

ドキュメントからわかるようSystem.DBNull.Valueに、 によって返されるべきではないため、チェックする必要はありませんExecuteScalar()

戻り値
の 型: System.Object
結果セットの最初の行の最初の列、または結果セットが空の場合は null 参照 (Visual Basic では Nothing)。最大 2033 文字を返します。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspxから

于 2013-04-29T21:09:12.220 に答える