Winform中,如果实现上传多张图片,并放入数据库中,又如何在Winform中显示这些图片呢?

解决方案 »

  1.   

    如果是保存在数据库,直接以字节的方法写入资料库,显示时读取字段就行.  
    如果以实体文件存在,可以用ftp方式.以循环的方式按照上面的方法可以保存多张图片
      

  2.   

    看需求,如果是保存在数据库的话,那必须使用byte[],
    保存时,先把图片数据转换成byte[],这个不用教了吧,然后通过参数传进数据库
    例如,string sql = "insert into lib(imagedata) values(@imagedata)"; sqlparameter p = new sqlparameter("@imagedata", byte[]);
    读取数据时,读取到的是byte[]数据,需要再转换成Image对象。
      

  3.   

    openfiledialog选择多文件
    循环添加到数据库OpenFileDialog openFileDialog1 = new OpenFileDialog();
    if(openFileDialog1.ShowDialog() == DialogResult.OK)
    {
    }
      

  4.   

    1、图片存硬盘上,数据库存相对路径;
    2、图片用10进制格式直接存在数据库,具体做法可能涉及到Image 类的用法 ,MSDN上查
      

  5.   

    以下为我的显示代码 
    try
                {
                    list.Clear();
                    liststr.Clear();
                    listpath.Clear();
                    dataGridView1.Columns.Clear();
                    if (LblCarAutoId.Text != "")
                    {
                        string sql = "select AutoId,oleImg  from tCarImg where iPID=@autoid";
                        SqlParameter parame = new SqlParameter("@autoid", SqlDbType.BigInt);
                        parame.Value = Convert.ToInt32(LblCarAutoId.Text);
                        SqlDataReader sdr = DataBase.getDataReader(sql, parame);
                        while (sdr.Read())
                        {
                           
                            if (sdr["oleImg"].GetType() != typeof(DBNull))
                            {
                                Image image = Image.FromFile(sdr["oleImg"].ToString());
                                Image ReducedImage;
                                Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);
                                ReducedImage = image.GetThumbnailImage(50, 50, callb, IntPtr.Zero);
                                list.Add(ReducedImage);
                                liststr.Add(sdr["AutoId"].ToString());
                                listpath.Add(sdr["oleImg"].ToString());
                            }
                        }
                        sdr.Close();
                    }
                    
                }
                catch (Exception e)
                {
                }
    保存多种和保存一张一样,只是循环保存图片
      

  6.   

    还有这段代码: DataGridViewImageColumn img = new DataGridViewImageColumn();
                    this.dataGridView1.Columns.Insert(0, img);
                    int i = 0;
                    foreach (Image image in list)
                    {
                        dataGridView1.Rows.Add();
                        this.dataGridView1[0, i].Value = image;
                        dataGridView1.Rows[i].Height = 60;
                        i++;
                    }