如何安全地从SQL Server读取可能为null的字符串值?

B. *_*non 2 c# sql t-sql sql-server isnull

当Address2列为空时,此行:

string address2 = sqlD8aReader.GetString(ADDRESS2_OFFSET);
Run Code Online (Sandbox Code Playgroud)

......失败了:

  System.Data.SqlTypes.SqlNullValueException was unhandled by user code
  HResult=-2146232015
  Message=Data is Null. This method or property cannot be called on Null values.
  Source=System.Data
  StackTrace:
       at System.Data.SqlClient.SqlBuffer.get_String()
       at System.Data.SqlClient.SqlDataReader.GetString(Int32 i)
       at HandheldServer.Models.SQLServerPOCRepository..ctor() in c:\HandheldServer\HandheldServer\Models\SQLServerPOCRepository.cs:line 58
  InnerException:
Run Code Online (Sandbox Code Playgroud)

如何安全地读取可能为null的字符串?它应该以某种方式在SQL中处理(如果是这样,如何?)还是应该在read/C#代码中处理?

ako*_*ata 5

我不知道你的数据是如何被填充的,但是当我们执行我工作的查询时,如果必须为某些操作设置空字符串而不是null,我们将使用ISNULL(column, '')可能返回null的列.我们的应用程序层不需要担心值是否为null,它只会像字符串一样处理它.

否则,如果你想处理它的应用程序端,你可以使用这个:

if(!sqlD8aReader.IsDBNull(ADDRESS2_OFFSET))
{
    string address2 = sqlD8aReader.GetString(ADDRESS2_OFFSET);
}
Run Code Online (Sandbox Code Playgroud)