0

我的代码基本上是这样的:

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

查询返回 null 的可能性是存在的。那么我怎样才能找出它是否为空,然后将它存储到我的字符串中呢?我上面使用的不起作用,因为字符串引发了异常。那么我可以将值暂时存储到某个东西中,然后再将其扔回字符串中吗?我不想先运行两个 ExecuteScalar 来确定它是否为空,然后再存储它。

4

2 回答 2

0

我通常这样做:

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

picTemp如果null没有返回结果。如果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
结果集中第一行的第一列,如果结果集为空,则为空引用(在 Visual Basic 中为 Nothing)。返回最多 2033 个字符。

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

于 2013-04-29T21:09:12.220 回答