如何通过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
是某种类型的SQLDataReader
。我在web.config文件中编辑了MaxArrayLength属性。输入一个像maxArrayLength=“2147483647”这样的大数字。但它仍然崩溃。我应该提到的一点是,它是一个wcf应用程序。您的错误消息是关于XML而不是SQL的。请显示异常所指的代码。应用程序正在我将照片转换为字节数组的那一行崩溃。我真的不相信您显示的错误消息与代码有关。我假设dr
是某种类型的SQLDataReader
。我在web.config文件中编辑了MaxArrayLength属性。输入一个像maxArrayLength=“2147483647”这样的大数字。但它仍然崩溃。我应该提到的一点是,它是一个wcf应用程序。