Datareader无法读取图像值 [英] Datareader not reading image value

查看:73
本文介绍了Datareader无法读取图像值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在页面加载时使用datareader来读取和存储变量中的数据库值,我的表包括nvarchar和image类型列。在页面加载时,数据库中的5个图像值不会被读取器读取,但其他图像完全被读取。



i am using datareader at page load to read and store database values in variables, my table includes both nvarchar and image type columns. At page load my 5 images value in database is not read by reader but others are perfectly read.

    Byte[] img1 = null;
    Byte[] img2 = null;
    Byte[] img3 = null;
    Byte[] img4 = null;
    Byte[] img5 = null;
    SqlConnection con = new SqlConnection("Data Source=RAJ-PC\\SQLEXPRESS;Initial Catalog=Finder;Integrated Security=True");
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            loadad();
        }
    }

protected void loadad()
    {
        SqlCommand cmd = new SqlCommand("sps_addetails", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@ad_id", ad_id);
        cmd.Parameters.AddWithValue("@useremail", ses);
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        while (reader.Read())
        {
            rd_iam.SelectedValue = reader["iam"].ToString();
            dd_category.SelectedValue = reader["category"].ToString();
            c = Convert.ToInt16(reader["category"].ToString());
            dd_subcategory.SelectedValue = reader["subcategory"].ToString();
            txt_title.Text = reader["title"].ToString();
            txt_description.Text = reader["description"].ToString();
            txt_pername.Text = reader["contactname"].ToString();
            txt_mobile1.Text = reader["mobile1"].ToString();
            txt_mobile2.Text = reader["mobile2"].ToString();
            txt_landline1.Text = reader["landline1"].ToString();
            txt_landline2.Text = reader["landline2"].ToString();
            txt_email1.Text = reader["email1"].ToString();
            txt_email2.Text = reader["email2"].ToString();
            txt_website.Text = reader["website"].ToString();
            dd_country.Text = reader["country"].ToString();
            d = Convert.ToInt16(reader["country"].ToString());
            dd_state.Text = reader["state"].ToString();
            txt_pincode.Text = reader["pincode"].ToString();
            txt_address.Text = reader["address"].ToString();
            txt_lat.Text = reader["latitude"].ToString();
            txt_lon.Text = reader["longitude"].ToString();

            img1 = (byte[])reader["image1"];
            img2 = (byte[])reader["image2"];
            img3 = (byte[])reader["image3"];
            img4 = (byte[])reader["image4"];
            img5 = (byte[])reader["image5"];

        }
        con.Close();
        
    }

推荐答案

参见 MSDN


您的代码是完美的



它是否为varbinary格式?

您输入了正确的字节数据吗?



请参阅以下有助于您的文章





[-a href =http://www.codeproject.com/Articles/ 10861 /存储和检索图像 - 来自SQL-Server-usintarget =_ blanktitle =新窗口> ^ ]

转换-图像到字节阵列 - and-Byte-Array-to-Image-in-csharp.html [ ^ ]
Your code is perfect

It's in varbinary format or not?
Have you entered correct byte arrary data ?

See following articles which will help you


Storing and Retrieving Images from SQL Server using Microsoft .NET[^]
Convert-Image-to-Byte-Array-and-Byte-Array-to-Image-in-csharp.html[^]


<img runat="server" id="image1" alt="" src="" height="100" width="100" />







protected void LoadImage1()
    {
        SqlCommand cmd = new SqlCommand("sps_getimage", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@flag", 1);
        cmd.Parameters.AddWithValue("@ad_id", ad_id);
        con.Open();
        SqlDataReader reader = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess);
        if (reader.HasRows)
        {
            reader.Read();
            MemoryStream memory = new MemoryStream();
            long startIndex = 0;
            const int ChunkSize = 256;
            while (true)
            {
                byte[] buffer = new byte[ChunkSize];
                long retrievedBytes = reader.GetBytes(0, startIndex, buffer, 0, ChunkSize);
                memory.Write(buffer, 0, (int)retrievedBytes);
                startIndex += retrievedBytes;
                if (retrievedBytes != ChunkSize)
                    break;
            }

            byte[] data = memory.ToArray();
            img1 = data;
            memory.Dispose();
            image1.Src = "data:image/png;base64," + Convert.ToBase64String(data);
        }
        con.Close();
    }


这篇关于Datareader无法读取图像值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆