أخوانى الأعزاء
لدى جدول به صورة ، أريد أن أقوم باستدعائها فى PictureBox
وقمت بكتابة الكود (الصورة المرفقة) ، ولكن يظهر خطأ ، أرجو إفادتى حول كيفية إصلاح هذا الخطأ

تحياتى
أخوانى الأعزاء
لدى جدول به صورة ، أريد أن أقوم باستدعائها فى PictureBox
وقمت بكتابة الكود (الصورة المرفقة) ، ولكن يظهر خطأ ، أرجو إفادتى حول كيفية إصلاح هذا الخطأ

تحياتى

السلام عليكم ورحمة الله وبركاته.
مرحبا أخي, قم بتوضيح الكود أكثر, فأنت لم تذكر ما ترجعه دالة selectCommand وما فائدة وجود الـ DataAdapter ان كنت لا تستخدمه, وما الذي يرجعه sp_CoPhotoLoad ؟
عموما أنا كتبت Method يمكنك استخدامها بتمرير الخلية التي تحتوي على الصورة :
private Bitmap CreateImage(object cell)
{
if (cell.GetType() == typeof(byte[]))
{
return new Bitmap(new MemoryStream((byte[])cell));
}
else if (cell.GetType() == typeof(Bitmap))
{
return (Bitmap)cell;
}
return null;
}بعد ملئ الجدول والتأكد انه يحتوي على الصور, قم بتمرير الخلية التي تحتوي على الصورة للـ Method السابقة :
pictureBox1.Image = CreateImage(ds.Tables[0].Rows[0]["CoPhoto"]);
ان كنت تود استرجاع صورة واحدة وهذا ما أظنه فليس هناك داع لاستخدام DataSet و DataAdapter والخ.
أشكرك أخى العزيز على الاهتمام
الموضوع أنى أريد استدعاء صورة من قاعدة بيانات SQL2000
وكنت أحاول ذلك عن طريق Stored Procedure يأتى بالصورة ، ثم يضعه فى Dataset من خلال SelectCommand Method ، وتحتوى Dataset على []Object Byte
والمشكلة هى رسالة الخطأ التى تظهر Parameter is not valid
وعندما تتبعت الكود ، وجدت myStr يحتوى على قيمة 21 ، ولكن لا يستطيع وضعها داخل PictureBox.Image
فأرجو الإفادة جزاك الله خيراً
وبالمناسبة أنى وجدتك ، لدى طلب أرجو ألا أثقل عليك به
طلب منى برنامج يتم عمل الفورم الخاصة به عن طريق ملفات HTML ، باستخدام JavaScript ، بحيث يكون البرنامج خليط بين
Windows Application و Web Application
ويكتب الكود عن طريق C# 2005 ، ولكن بدون فورم ، ويتم وضع Events بالبرنامج لعدد من Controls
ولكن يتم تحديد مكان هذه Controls فى ملف HTML
أرجو إفادتى بطريقة عمل هذا ، حيث أنى أتعرض لهذا لأول مرة ، وإن وجد مثال أكون شاكراً لله ثم لك
جزاك الله خيراً

في الحقيقة لا أستطيع حل المشكلة بدون رؤية أو معرفة ما تستقبله وما ترجعه الـ Stored Procedure ! على كل حال ان كان العمود الذي يحتوي على الصورة اسمه PhotoColumn والجدول اسمه PhotosTable, يمكنك عمل هذا :
DataTable yourDataTable = new DataTable();
SqlCommand yourCommand = new SqlCommand("Select PhotoColumn from PhotosTable");
yourCommand.Connection = yourConnection;
yourCommand.Connection.Open();
yourDataTable.Load(yourCommand.ExecuteReader());
yourCommand.Connection.Close();بعد هذا ارسل الخلية التي تود عرض صورتها في الـ PictureBox لدالة الـ CreateImage التي كتبتها في الكود السابق, مثلا :
yourPictureBox.Image = CreateImage(yourDataTable.Rows[0][0]);
وان كنت تود استرجاع صورة واحدة فلا داع لاستخدام الـ DataTable فاعمل Query مثلا بـ ID الصف الذي تريده واستخدم ExecuteScalar.
وبالنسبة للاستفسار الثاني فالحقيقة لم أفهم منك المطلوب بدقة, فاعطني مثال أو اسم برنامج موجود يشبه ما تريد فعله.
أخى العزيز
أشكر لك إهتمامك ، لقد صممت مثال يوضح المشكلة
برجاء الإطلاع ، تحياتى
الرابط : http://www.evilshare.com/dcab7f92-3bd7-102...7b-00a0c993e9d6

من خلال المثال الذي وضعته أعتقد أن طريقة حفظ الصورة في قاعدة البيانات غير صحيحة:
execCommand("sp_SavePhoto '" + pictureBox1.Image + "'");يجب تمرير مصفوفة من البايتات Byte[]:
1 - Save Image to MemoryStream 2 - Write Memory Stream to Byte array 3 - Use SqlParameter to pass Byte[] value
أرجو تجريب الخطوات السابقة لأنها مجربة وصحيحية 100%
والشيفرة التالية أستخدمها في مشاريعي وهي شغالة 100%:
private byte[] GetImageBytes()
{
string TempFile = Path.GetTempFileName();
pbLogo.Image.Save(TempFile);
FileStream fs = new FileStream(TempFile, FileMode.Open);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, Convert.ToInt32(fs.Length));
fs.Close();
return buffer;
}أما تمرير مصفوفة البايتات فيتم كما يلي:
Command.AddWithValue("@Image", GetImageBytes());الشيفرة التالية مجرد مثال بسيط وغير كامل أرجو أن تستفيد منه
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…