保存&使用XML C#将datagridview中的多个图像byte []代码检索到MSSQL [英] save & retrive multiple image byte[] code in datagridview to MSSQL using XML C#

查看:46
本文介绍了保存&使用XML C#将datagridview中的多个图像byte []代码检索到MSSQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建第一个数据表以在datagridview中保存图像。

i am creating first one data table to save images in datagridview.

DataTable dt = new DataTable();
        dt.Columns.Add("Name", typeof(string));//0
        dt.Columns.Add("Upload", typeof(string));//1
        dt.Columns.Add("Show", typeof(string));//2
        dt.Columns.Add("image", typeof(byte[]));//3

        for (int i = 0; i < dgvDemo.RowCount-1; i++)
        {
            DataRow drOLD = dt.NewRow();
            drOLD["image"] =dgvDemo.Rows[i].Cells[3].Value;
            drOLD["Name"] = dgvDemo.Rows[i].Cells[0].Value;
            drOLD["Upload"] = "Upload";
            drOLD["Show"] = "Show";
            dt.Rows.Add(drOLD);
        }

        Image img = PBImage.Image; //Image.FromFile(@"physical path to the file");
        DataRow dr = dt.NewRow();
        dr["image"] = imageToByteArray(img);
        dr["Name"] = "Image";
        dr["Upload"] = "Upload";
        dr["Show"] = "Show";
        dt.Rows.Add(dr);

        dgvDemo.DataSource = dt;

    public byte[] imageToByteArray(System.Drawing.Image imageIn)
    {
        MemoryStream ms = new MemoryStream();
        imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
        return ms.ToArray();
    }





以下代码用于在数据库中保存图像,使用XML作为存储过程的参数





Following is code is use for save images in database using XML as parameter for Store Procedure

hash = new Hashtable();
            hash.Add("@QueryNo", QueryNo);
            string strXmlCategory_Section = "";
            StringBuilder xmlClassMaster = new StringBuilder();
              for (int k = 0; k < dgvDemo.Rows.Count-1; k++)
                {
                    xmlClassMaster.Append("<Row>");
                    xmlClassMaster.Append("<Name>" + dgvDemo.Rows[k].Cells[0].Value + "</Name>");
                    xmlClassMaster.Append("<GridImage><cdata>" + ((byte[])dgvDemo.CurrentRow.Cells[3].Value) + "</cdata></GridImage>");
                    xmlClassMaster.Append("</Row>");
                }

                if (xmlClassMaster.Length > 0)
                {
                    xmlClassMaster.Append("</ImageInGrid>");
                    strXmlCategory_Section = "<ImageInGrid>" + Convert.ToString(xmlClassMaster);
                }
                hash.Add("@strImageInGrid", strXmlCategory_Section);







哈希表作为参数列表传递给SP。



存储过程代码在数据库中








hash table is passing as parameter list to SP.

Store Procedure Code in Database


Exec sp_xml_prepareDocument @DocHandle_ImageInGrid output, @strImageInGrid

select Name, GridImage
        into #temp 
        from OPENXML (@DocHandle_ImageInGrid, '/ImageInGrid/Row',12)
        with (

                Name varchar(50) 'Name', 
                GridImage varbinary(max) 'GridImage'

             )

    insert into dbo.GridImage
        ( Name, GridImage)
    Select  Name, GridImage
    From #temp





i从数据库获取图像时遇到问题&它到网格。错误是-parameter无效。在system.drawing.image.fromstream我认为我的保存方法有误请帮助



i Have Problem in Fetch Image from database & it to Grid . error is -parameter is not valid. at system.drawing.image.fromstream i think that my save method is wrong please help

推荐答案

似乎你是对的

尝试使用 Dataset.Getxml [ ^ ]

并将其发送到Storedproc,同时根据需要更改xpath
seems you are right
try to use the Dataset.Getxml[^]
and send it to the Storedproc, also change the xpath as required


这篇关于保存&amp;使用XML C#将datagridview中的多个图像byte []代码检索到MSSQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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