Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#处理mysql查询中的空字节数组_C#_Mysql_Bytearray_Byte_Blob - Fatal编程技术网

c#处理mysql查询中的空字节数组

c#处理mysql查询中的空字节数组,c#,mysql,bytearray,byte,blob,C#,Mysql,Bytearray,Byte,Blob,我创建了一个应用程序,它基本上在mysql服务器上查找blob记录。我遇到的问题是,无论出于何种原因,如果blob字段为空,应用程序就会崩溃。我想到了类似的事情 if (DbReader.IsDbNull(2) byte[] data = /* DEFAULT VALUE */ else byte[] data = (byte[])DbReader[2]; 我现在有 byte[] data = (byte[])DbReader[2]; 但我想知道是否有什么方法可以做到 if

我创建了一个应用程序,它基本上在mysql服务器上查找blob记录。我遇到的问题是,无论出于何种原因,如果blob字段为空,应用程序就会崩溃。我想到了类似的事情

if (DbReader.IsDbNull(2)
    byte[] data = /* DEFAULT VALUE */
else
    byte[] data = (byte[])DbReader[2];
我现在有

byte[] data = (byte[])DbReader[2];
但我想知道是否有什么方法可以做到

if (DbReader.IsDbNull(2)
    byte[] data = /* DEFAULT VALUE */
else
    byte[] data = (byte[])DbReader[2];
但是我可以设置一个默认值吗??我尝试的一切都失败了:(

这个怎么样:

byte[] data = null;
数组是引用类型,因此您可以为其分配null。稍后您将能够看到数据是否为null,如下所示:

if(data != null)
{
    //there is data inside that array, you can go ahead and use it.
}
byte[] data = DbReader.IsDbNull(2) ? null : (byte[])DbReader[2];
var data = reader.GetOrDefault(2, new byte[] { 1, 2, 3 });
编辑:简化

您可以将代码简化如下:

if(data != null)
{
    //there is data inside that array, you can go ahead and use it.
}
byte[] data = DbReader.IsDbNull(2) ? null : (byte[])DbReader[2];
var data = reader.GetOrDefault(2, new byte[] { 1, 2, 3 });

您可以将其设置为空数组:

byte[] data = new byte[0];
您可以尝试以下方法:


如果您打算在多个地方使用它,您可以将其封装在扩展方法中

public static class DbDataReaderExt {
    public static T GetOrDefault<T>(this DbDataReader reader, int index, T default_value = default(T)) {
        if (reader.IsDBNull(index))
            return default_value;
        return (T)reader[index];
    }
}

顺便说一句,这也适用于非
byte[]
类型。

默认情况下,您指的是在SQL中定义的某个地方的默认值?不只是在这一阶段定义的标准值,例如1、2或3。在这方面实现了一点变化,但感谢您的回答!)