如何通过SqlCommand将图像从SQL Server获取到C#?

如何通过SqlCommand将图像从SQL Server获取到C#?,c#,sql,sql-server,image,sqlcommand,C#,Sql,Sql Server,Image,Sqlcommand,我试图将图像转换为字节数组,但它使应用程序崩溃 错误如下所示: <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 反序列化对象时出错。读取XML数据时已超过最大数组长度配额(16384)。可以通过更改创

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

错误如下所示:

<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
        maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
反序列化对象时出错。读取XML数据时已超过最大数组长度配额(16384)。可以通过更改创建XML读取器时使用的XmlDictionaryReaderQuotas对象的MaxArrayLength属性来增加此配额

这是我的代码:

if (dr["Photo"] != DBNull.Value)
{
    rider.Photo = (byte[])dr["Photo"];
}
有更好的方法吗?有用的东西

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

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


即使如此,输出也是一样的

这样就可以了

if (dr["Photo"] != DBNull.Value)
{
    Byte[] data = (Byte[])(dr["Photo"]);
    MemoryStream mem = new MemoryStream(data);
    rider.Photo = Image.FromStream(mem);
}
而我认为应该是
.Image


你可以在

上看一下,这样就可以了

if (dr["Photo"] != DBNull.Value)
{
    Byte[] data = (Byte[])(dr["Photo"]);
    MemoryStream mem = new MemoryStream(data);
    rider.Photo = Image.FromStream(mem);
}
而我认为应该是
.Image


您可以查看Nope@tahremiqbal,它应该是
System.Drawing
namespace,而不是
System.Net.Mime.MediaTypeNames
您可以指定代码
System.Drawing.Image.FromStream(mem)中是否存在任何歧义
Nope@tahremiqbal它应该是
System.Drawing
名称空间,而不是
System.Net.Mime.MediaTypeNames
您可以指定代码
System.Drawing.Image.FromStream(mem)中是否存在任何歧义您的错误消息是关于XML而不是SQL的。请显示异常所指的代码。应用程序正在我将照片转换为字节数组的那一行崩溃。我真的不相信您显示的错误消息与代码有关。我假设
dr
是某种类型的SQL
DataReader
。我在web.config文件中编辑了MaxArrayLength属性。输入一个像maxArrayLength=“2147483647”这样的大数字。但它仍然崩溃。我应该提到的一点是,它是一个wcf应用程序。您的错误消息是关于XML而不是SQL的。请显示异常所指的代码。应用程序正在我将照片转换为字节数组的那一行崩溃。我真的不相信您显示的错误消息与代码有关。我假设
dr
是某种类型的SQL
DataReader
。我在web.config文件中编辑了MaxArrayLength属性。输入一个像maxArrayLength=“2147483647”这样的大数字。但它仍然崩溃。我应该提到的一点是,它是一个wcf应用程序。