مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

miladrq

عضویت از 1394/08/29

فراخوانی چند تصویر از دیتابیس در ویندوز فرم

  • شنبه 20 خرداد 1396
  • 13:57
تشکر میکنم

با سلام خدمت شما دوستان عزیز چطور میشه با از sql server چند تصویر فراخوانی کرد و وقتی مثلا روی دکمه یک کلیک میکنیم تصویر picture box به تصویر یک تغییر پیدا کنه و دکمه دو به همین صورت تا اخر.

من الان تصویر به صورت []byte در دیتابیسم ذخیره کردم و برای فراخوانی دوباره تصویر از دیتابیس مشکلی ندارم مشکل من اینه که چطور بتونم دوباره هر چندتا عکس موجود هست رو  از []byte به تصویر تبدیل کنم و با کلیک روی دکمه مربوطه اونو تو picture box نشون بدم چون با هر راهی رفتم ایراد گرفته. ایراد هم این بوده : parameter is not valid

من با فراخوانی یک تصویر و نشون دادنش تو فرم مشکلی ندارم و الان مشکلم فراخوانی چند تصویر هستش.

لطفا راهنمایی کنید با تشکر 

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 20 خرداد 1396
  • 15:17

این لینک رو ببینید

کاربر سایت

miladrq

عضویت از 1394/08/29

  • شنبه 20 خرداد 1396
  • 17:28
دوست عزیز مشکل من این هستش که هر رکورد من ۶ تا عکس داره و من فقط میتونیم یکیشو فراخوانی کنم و وقتی که مثلا روی دکمه تصویر دو کلیک میکنم خطا میگیرم. من برای هر تصویر از یک Memory Stream مجزا استفاده کردم ولی بازم ایراد میگیره و میگه parameters is not valid
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 20 خرداد 1396
  • 17:31

کد به همراه کوئری را قرار دهید تا بررسی کنم

کاربر سایت

miladrq

عضویت از 1394/08/29

  • شنبه 20 خرداد 1396
  • 18:46
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Data.Entity.Core.Objects;

namespace Real_Estate
{
    public partial class frmPhotoGallery : Form
    {
        RealEstateEntities db = new RealEstateEntities(File.ReadAllText(Application.StartupPath + @"\DBCS\StringConnection.txt"));

        public static int HomeID = 0;

        ObjectParameter pic1 = new ObjectParameter("Pic1", typeof(byte[]));
        ObjectParameter pic2 = new ObjectParameter("Pic2", typeof(byte[]));
        ObjectParameter pic3 = new ObjectParameter("Pic3", typeof(byte[]));
        ObjectParameter pic4 = new ObjectParameter("Pic4", typeof(byte[]));
        ObjectParameter pic5 = new ObjectParameter("Pic5", typeof(byte[]));
        ObjectParameter pic6 = new ObjectParameter("Pic6", typeof(byte[]));
        ObjectParameter pic7 = new ObjectParameter("Pic7", typeof(byte[]));
        ObjectParameter pic8 = new ObjectParameter("Pic8", typeof(byte[]));
        ObjectParameter pic9 = new ObjectParameter("Pic9", typeof(byte[]));
        ObjectParameter pic10 = new ObjectParameter("Pic10", typeof(byte[]));

        byte[] Photo1 = null;
        byte[] Photo2 = null;
        byte[] Photo3 = null;
        byte[] Photo4 = null;
        byte[] Photo5 = null;
        byte[] Photo6 = null;
        byte[] Photo7 = null;
        byte[] Photo8 = null;
        byte[] Photo9 = null;
        byte[] Photo10 = null;


        public frmPhotoGallery()
        {
            InitializeComponent();
        }

        private void btnPhoto1_Click(object sender, EventArgs e)
        {
            try
            {

                MemoryStream ms1 = new MemoryStream(Photo1);

                picHome.Image = Image.FromStream(ms1);

                lblPhotoNumber.Text = "تصویر یک";

                //MessageBox.Show("Ok");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

        }

        private void btnPhoto2_Click(object sender, EventArgs e)
        {
            MemoryStream ms2 = new MemoryStream(Photo2);

            picHome.Image = Image.FromStream(ms2);

            lblPhotoNumber.Text = "تصویر دو";

        }

        private void btnPhoto3_Click(object sender, EventArgs e)
        {
            MemoryStream ms3 = new MemoryStream(Photo3);

            picHome.Image = Image.FromStream(ms3);

            lblPhotoNumber.Text = "تصویر سه";

        }

        private void btnPhoto4_Click(object sender, EventArgs e)
        {
            MemoryStream ms4 = new MemoryStream(Photo4);

            picHome.Image = Image.FromStream(ms4);

            lblPhotoNumber.Text = "تصویر چهار";

        }

        private void btnPhoto5_Click(object sender, EventArgs e)
        {
            MemoryStream ms5 = new MemoryStream(Photo5);

            picHome.Image = Image.FromStream(ms5);

            lblPhotoNumber.Text = "تصویر پنج";

        }

        private void btnPhoto6_Click(object sender, EventArgs e)
        {
            MemoryStream ms6 = new MemoryStream(Photo6);

            picHome.Image = Image.FromStream(ms6);

            lblPhotoNumber.Text = "تصویر شش";

        }

        private void btnPhoto7_Click(object sender, EventArgs e)
        {
            MemoryStream ms7 = new MemoryStream(Photo7);

            picHome.Image = Image.FromStream(ms7);

            lblPhotoNumber.Text = "تصویر هفت";

        }

        private void btnPhoto8_Click(object sender, EventArgs e)
        {
            MemoryStream ms8 = new MemoryStream(Photo8);

            picHome.Image = Image.FromStream(ms8);

            lblPhotoNumber.Text = "تصویر هشت";

        }

        private void btnPhoto9_Click(object sender, EventArgs e)
        {
            MemoryStream ms9 = new MemoryStream(Photo9);

            picHome.Image = Image.FromStream(ms9);

            lblPhotoNumber.Text = "تصویر نه";

        }

        private void btnPhoto10_Click(object sender, EventArgs e)
        {
            MemoryStream ms10 = new MemoryStream(Photo10);

            picHome.Image = Image.FromStream(ms10);

            lblPhotoNumber.Text = "تصویر ده";

        }

        private void frmPhotoGallery_Load(object sender, EventArgs e)
        {
            db.GetPhotoHome(HomeID, pic1, pic2, pic3, pic4, pic5, pic6, pic7, pic8, pic9, pic10);

            Photo1 = (byte[])pic1.Value;
            Photo2 = (byte[])pic2.Value;
            Photo3 = (byte[])pic3.Value;
            Photo4 = (byte[])pic4.Value;
            Photo5 = (byte[])pic5.Value;
            Photo6 = (byte[])pic6.Value;
            Photo7 = (byte[])pic7.Value;
            Photo8 = (byte[])pic8.Value;
            Photo9 = (byte[])pic9.Value;
            Photo10 = (byte[])pic10.Value;

            MemoryStream ms = new MemoryStream(Photo2);

            picHome.Image = Image.FromStream(ms);

            lblPhotoNumber.Text = "تصویر یک";

        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

این کد های فرم هستش

CREATE PROCEDURE [dbo].[GetPhotoHome]
@ID int,
@Pic1 VARBINARY(MAX)      OUTPUT,
@Pic2 VARBINARY(MAX)      OUTPUT,
@Pic3 VARBINARY(MAX)      OUTPUT,
@Pic4 VARBINARY(MAX)      OUTPUT,
@Pic5 VARBINARY(MAX)      OUTPUT,
@Pic6 VARBINARY(MAX)      OUTPUT,
@Pic7 VARBINARY(MAX)      OUTPUT,
@Pic8 VARBINARY(MAX)      OUTPUT,
@Pic9 VARBINARY(MAX)      OUTPUT,
@Pic10 VARBINARY(MAX)      OUTPUT
AS
BEGIN
	SET @Pic1 =  (SELECT HomePic1 FROM Home WHERE Home.ID = @ID)
	SET @Pic2 =  (SELECT HomePic2 FROM Home WHERE Home.ID = @ID)
	SET @Pic3 =  (SELECT HomePic3 FROM Home WHERE Home.ID = @ID)
	SET @Pic4 =  (SELECT HomePic4 FROM Home WHERE Home.ID = @ID)
	SET @Pic5 =  (SELECT HomePic5 FROM Home WHERE Home.ID = @ID)
	SET @Pic6 =  (SELECT HomePic6 FROM Home WHERE Home.ID = @ID)
	SET @Pic7 =  (SELECT HomePic7 FROM Home WHERE Home.ID = @ID)
	SET @Pic8 =  (SELECT HomePic8 FROM Home WHERE Home.ID = @ID)
	SET @Pic9 =  (SELECT HomePic9 FROM Home WHERE Home.ID = @ID)
	SET @Pic10 = (SELECT HomePic10 FROM Home WHERE Home.ID = @ID)
END

اینم پروستیجر مربوط به دریافت از دیتابیس

این کوئری ها به درستی مقدارها رو به برنامه منتقل میکند ولی من در تبدیل آرایه بایت هر عکس به عکس و نمایش در picture box مشکل دارم

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)