如何通过SqlCommand将映像从SQL Server转换为C#?

时间:2015-09-28 07:13:03

标签: c# sql sql-server image sqlcommand

我试图将图像转换为字节数组,但它会使应用程序崩溃。

错误是这样的:

  

反序列化对象时出错。读取XML数据时已超出最大数组长度配额(16384)。通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象的MaxArrayLength属性,可以增加此配额

这是我的代码:

if (dr["Photo"] != DBNull.Value)
{
    rider.Photo = (byte[])dr["Photo"];
}

有更好的方法吗?有什么用吗?

修改:所以,我认为这与图像尺寸太大而无法通过网络服务有关。我编辑了webconfig文件并更改了ReaderQuotes标记值,如下所示:

<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
        maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />

即使这样,输出也是一样的。

1 个答案:

答案 0 :(得分:0)

这可以解决问题

z <- merge(cars, voyages, by="car_id")
z <- z[as.Date(z$since)<=as.Date(z$date),]
z <- z[order(as.Date(z$since), decreasing=TRUE),]
z <- z[!duplicated(z$voy_id),]

我相信if (dr["Photo"] != DBNull.Value) { Byte[] data = (Byte[])(dr["Photo"]); MemoryStream mem = new MemoryStream(data); rider.Photo = Image.FromStream(mem); } 而不是.Photo

您可以查看The maximum array length quota (16384) has been exceeded