با سلام خدمت شما دوستان عزیز چطور میشه با از sql server چند تصویر فراخوانی کرد و وقتی مثلا روی دکمه یک کلیک میکنیم تصویر picture box به تصویر یک تغییر پیدا کنه و دکمه دو به همین صورت تا اخر.
من الان تصویر به صورت []byte در دیتابیسم ذخیره کردم و برای فراخوانی دوباره تصویر از دیتابیس مشکلی ندارم مشکل من اینه که چطور بتونم دوباره هر چندتا عکس موجود هست رو از []byte به تصویر تبدیل کنم و با کلیک روی دکمه مربوطه اونو تو picture box نشون بدم چون با هر راهی رفتم ایراد گرفته. ایراد هم این بوده : parameter is not valid
من با فراخوانی یک تصویر و نشون دادنش تو فرم مشکلی ندارم و الان مشکلم فراخوانی چند تصویر هستش.
لطفا راهنمایی کنید با تشکر
این لینک رو ببینید
کد به همراه کوئری را قرار دهید تا بررسی کنم
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 مشکل دارم
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)