【问题标题】:Extract images through database通过数据库提取图像
【发布时间】:2013-04-09 07:58:22
【问题描述】:

我正在从数据库中提取图像(SQL Server 2008) 我正在使用 WPF 应用程序,使用 Grid_Loaded 事件来加载页面。 我发现的示例主要是使用组合框来选择图像的 ID 并显示它。但是我不想使用组合框。

我在网上找到了几行代码,如果有人帮助我,将不胜感激!

private void LoadImages()
    {
        try
        {

            string connstr = @"Server=CTGPJLPC21\SQLEXPRESS;Database=testing;Trusted_Connection=True;";
            using (SqlConnection conn = new SqlConnection(connstr))
            {
                conn.Open();
                using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM test_table", conn))
                {
                    dset = new DataSet();
                    adapter.Fill(dset);
                }
                DataTable dt = dset.Tables[0];
                foreach (DataRow row in dt.Rows)
                {
                    if (dset.Tables[0].Rows.Count == 1)
                    {
                        byte[] data = (byte[])dset.Tables[0].Rows[0][0];

                        MemoryStream strm = new MemoryStream();

                        strm.Write(data, 0, data.Length);

                        strm.Position = 0;

                        System.Drawing.Image img = System.Drawing.Image.FromStream(strm);

                        BitmapImage bi = new BitmapImage();

                        bi.BeginInit();

                        MemoryStream ms = new MemoryStream();

                        img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);

                        ms.Seek(0, SeekOrigin.Begin);

                        bi.StreamSource = ms;

                        bi.EndInit();

                        myImg.Source = bi;
                    }
                }
                }
        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.Message);

        }
    }

【问题讨论】:

    标签: c# sql database image extract


    【解决方案1】:
    long bufferSize = dataReader.IsDBNull(1) ? 0 : dataReader.GetInt64(1);
    if (bufferSize > 0)
    {
        j.PictureContent = new byte[bufferSize];
        bufferSize = dataReader.GetBytes(1, 0, j.PictureContent, 0, Convert.ToInt32(bufferSize));
    }
    



    其中 j 是类实例,j.PictureContent 是 byte[]。

    【讨论】:

      猜你喜欢
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多