مشاهده دست آورد نظرسنجی: آيا توضيحات و كدها كامل است ؟

رای دهنده
21. شما نمی توانید در این رای گیری رای بدهید
  • بله

    11 52.38%
  • خير

    5 23.81%
  • متوسط

    5 23.81%
نمایش نتایج 1 تا 12 از 12

نام تاپیک: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

  1. #1

    Talking پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    سلام
    من يك نمونه برنامه نوشتم كه تقريباً هر كاري كه لازم در ارتباط با عكس و پايگاه داده صورت بگيره توش هست و بعضي جاها تو كد به فارسي توضيح دادم

    برنامه با VS 2008 هست
    اما از فريم فرك دو استفاده كردم تا بقيه هم بتونند نحوه كار ببينند
    پايگاه داده اكسس 2003
    كارايي برنامه
    1. باز كردن عكس دلخواه
    2. تغيير سايز عكس
    3. ذخيره در بانك
    4. بازيابي و نمايش
    5. به روز رساني عكسهاي ذخيره شده با سايز جديد
    6. قابليت حذف
    اميدوارم اين كمكي باشه بر سوالات دوستان در اين مورد

    اما چند مورد:
    در اين مثال بانك Access هست و فرمت فيلد عكس داخل بانك هم از نوع OLE Object هست. براي SQL Server هم از نوع( VARBINERY(MAX مي شه استفاده كرد.

    مايکروسافت قويا هشدار داده است که ديگر از نوع داده IMAGE استفاده نکنيد و به جاي آن از نوع دادة (VARBINERY(MAX استفاده کنيد؛ بايد بدانيد که نوع دادة IMAGE فقط براي سازگاري با SQL Server 2000 هنوز در SQL Server 2005 وجود دارد و در نگارش بعدي SQL Server ، ديگر اين نوع داده پشتيباني نخواهد شد.

    كدهاي ذخيره سازي:
    private void btSave_Click(object sender, EventArgs e)
    {
    try
    {
    MemoryStream ms = new MemoryStream();
    imageBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    byte[] bytes = ms.GetBuffer();
    oleDbCommand1.Parameters.Clear();
    oleDbCommand1.Parameters.Add("@Id", OleDbType.BSTR).Value = ++count;
    oleDbCommand1.Parameters.Add("@Pic", OleDbType.Binary).Value = bytes;
    oleDbCommand1.CommandText = "insert into Pic (id, pic) values(@Id, @pic)";
    oleDbCommand1.ExecuteNonQuery();
    tbTotal.Text = count.ToString();
    index = count;
    flag = true;
    MessageBox.Show("Saved successful");
    }
    catch (Exception ex) { MessageBox.Show(ex.ToString()); }
    }

    كدهاي بازيابي و نمايش:
    private void btShow_Click(object sender, EventArgs e)
    {
    if (tbNumber.Text != string.Empty)
    {
    if (count >= Int32.Parse(tbNumber.Text))
    {
    Show(Int32.Parse(tbNumber.Text));
    }
    else MessageBox.Show("شماره عكس مورد نظر بيشتر از تعداد عكس موجود در فايل اطلاعاتي است، امكان نمايش نيست");
    } else MessageBox.Show("شماره عكس مورد نظر براي نمايش را انتخاب كنيد");
    }
    private void Show(int indexID)
    {
    try
    {
    GC.Collect();//اين متد براي تخليه منابع سيستم فراخواني مي شود
    oleDbCommand1.CommandText = "SELECT pic FROM Pic WHERE id=" + indexID + "";
    OleDbDataReader myReader = oleDbCommand1.ExecuteReader();
    if (myReader.Read())
    {
    MemoryStream ms = new MemoryStream((byte[])(myReader.GetValue(0)));
    imageBox1.Image = Image.FromStream(ms);
    }
    myReader.Close(); index = indexID;
    flag = true; lbInfo.Text = "Original Size: " + imageBox1.Image.Size;
    }
    catch (Exception ex) { MessageBox.Show(ex.ToString()); }
    }

    همونطور كه مي بينيد از MemoryStream براي اين كار استفاده شده

    در ضمن به عمد از ImageBox خود دات نت استفاده نكردم و يك ImageBox سفارشي استفاده كردم كه قابليت هاي خوبي براي كار با عكس داره كه دوستان مي تونند سورس و توضيحات لازم اين كنترل از اين لينك دريافت كنند.
    (به دليل محدوديت در حجم فايل هاي پيوستي من سه قسمت گذاشتم براي اجراي برنامه بعد از دانلود هر سه فايل بايد براي فقط اجراي نسخه اجرايي پوشه DataBase در مسير برناه قرار بديد و براي استفاده از سورس لازم Dll هاي داخل فايل Demo به پوشه Debug اضافه كنيد همچنين به ToolBox ويژوال استديدو خودتون)

    سوالي اگر بود در خدمتم
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله احمد سامعی : دوشنبه 09 آذر 1388 در 10:58 صبح

  2. #2

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    فايل پايگاه داده برنامه
    فایل های ضمیمه فایل های ضمیمه

  3. #3
    کاربر دائمی آواتار danial82
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    iran_tehran
    پست
    531

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    نمیدونم چرا وقتی همین پروژه رو تبدیل به SQL میکنم به اشکال بر میخورم
    میتوانی همینو با SQL بنویسی

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    قم
    پست
    657

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    من مقاله شما را خوندم و مقاله خوبی بود .

    اما شما اونا با vs2008 نوشتید که من 2005 دارم . و نتونستم کامل برنامه را اجرا کنم .

    فقط تونستم با باز کردن Form1.cs دستورات اونا مشاهده کنم .

    به نظر میاد به صورت ویزار دیتابیس را وارد کردید .

    در ضمن تبدیل کدهای برنامه شما به sql وقت زیادی را میگیره .

    اگه بتونید با vs2005 بنویسید و از دیتابیس sql sarver استفاده کنید بهتر و مفید تر می بود .

    موقع اجرا کردن exe برنامه هم چند تا اررو داده می شه .

    در ضمن باعث شدید تاپیک من بسته بشه

    مرسی

  5. #5

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    منون از دقتتون دوستان

    1. در اينجا فقط قصد نشون دادن نحوه ذخيره و بازيابي و غيره بود و بانك اصلاً مهم نيست كه با كد ايجاد شده باشه يا ويزارد براي راحتي ديدن جدول از اكسس استفاده كردم اما سعي مي كنم نسخه SQL Server رو هم بزارم
    2. تبديل كدهايي كه از اكسس استفاده مي كنن با كدهاي SQL Server فقط تو كلاس هاي ADO.Net هست يعني اينجا ما از OleDB استفاده كرديم با SQL Server از كلاس هاي SQL در ADO استفاده مي شه كه يك دقيقه لازم داره تا عوض بشه
    3. نمي دونم چرا نتونستيد اجرا كنيد احتمالاً پوشه فايل اكسس كه پست دوم هست درست در مسير فايل اجرايي نگذاشتيد(خود فايل اكسس نبايد در كنار فايل exe قرار بگيره بايد به همون صورت پوشه بعد از اكسترك قرار بگيره )
    4. من چون مي دونستم همه VS2008 ندارن با دانت دو نوشتم و باز هم چون همه آفيس 2007 ندارند با فرمت 2003 ذخيره كردم تا مشكلي نباشه اما همونطور يكي از دوستان اشاره كردند چون كدها فقط در يك فايل اونهايي كه از 2005 استفاده مي كنند براحتي مي تونند همون فايل باز كنند و كدها رو ببيند
    (من چون رو سيستم 2008 هست نمي تونم نسخه 2005 آماده كنم و بفرستم شرمنده)
    باز هم درخدمتم

  6. #6

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    سلام دوست عزیز،
    از نمونه کدی که در این خصوص قرار دادید، سپاسگزارم،
    اما نمی توان روش مذکور را تنها روش ممکن و پایانی بر این مقوله دانست،
    همیشه برای رسیدن به یک هدف، روش های گوناگونی وجود دارد که باید از میان آن ها، بهترین روش را که بیشترین سازگاری را با شرایط پروژه داشته باشد، برگزید و باید به راه حل ها به عنوان Guideline نگاه کرد،
    پیشنهاد می کنم ابتدا مقاله زیر:
    Storing Images and BLOB Files in SQL Server
    و سپس مطلب زیر را که در خصوص نوع داده/ویژگی جدید FILESTREAM که به SQL Server 2008 اضافه شده است، می باشد:
    The FILESTREAM DataType in SQL SERVER 2008
    و بعد پست زیر که چگونگی بهره گیری از این ویژگی توسط LINQ را تشریح می کند را مطالعه نمایید:
    Visual Studio 2008 SP1: LINQ to SQL and FILESTREAM
    ویدئوی آموزنده ی زیر را نیز مشاهده نمایید:
    Channel 9 - SQL Server 2008 – FILESTREAM, WPF and HTTP
    ،/
    I've just started tweeting!
    @Alireza_Maddah

  7. #7

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    نقل قول نوشته شده توسط علیرضا مداح مشاهده تاپیک
    از نمونه کدی که در این خصوص قرار دادید، سپاسگزارم،
    من هم بيشتر سپاسگذارم به خاطر توجه عنايت شما استاد بزرگوار


    نقل قول نوشته شده توسط علیرضا مداح مشاهده تاپیک
    اما نمی توان روش مذکور را تنها روش ممکن و پایانی بر این مقوله دانست،
    همیشه برای رسیدن به یک هدف، روش های گوناگونی وجود دارد که باید از میان آن ها، بهترین روش را که بیشترین سازگاری را با شرایط پروژه داشته باشد، برگزید و باید به راه حل ها به عنوان Guideline نگاه کرد،
    صد البته كه حرف شما درست و صحيح و اين كد دقيقاً يك Guideline هست، من قصد جسارت نداشتم،
    در واقع در هر علمي نمي توان پاياني براي چيزي دانست مخصوصاً علوم كامپيوتر كه صدها هزار نفر در هر روز در حال توسعه اين علم هستند.
    شايد آخر شب (يعني سرصبح ساعت4:30) من عجله كردم واسه انتخاب عنوان منظور من هم همون يك شروع براي اين كار بود (چون ديدم دوستان زياد سوال دارن اين برنامه رو به عنوان يك راهنماي كلي قرار دادم در ضمن معمولاً چون اكثر برنامه نويس هاي ما در ايران مثل خودم از دنيا يك چند فاضي عقب هستيم به كار همه مي آيد چون هنوز ملت با برنامه هاي كهنه و نسخه هاي 2000 و ماقبل كار مي كنند و برنامه مي نويسند آفيس و SQL Server 2008 اومده هنوز با 98 كار مي كنند)
    ببخشيد استاد پر حرفي كردم شما عنوان پست به هرچيزي كه بهتر تغيير بدين

    در ضمن يك سوال فرعي من VS 2008 تازگي گرفتم اما SQL Server 2005 داره ؟ چرا 2008 نداره ؟ آيا نسخه هاي مختلفي هست ؟ ( چون به شدت معتقد به آپديت بودن در اين مسايل هستم ولي تو شهرستان همين هم كه گيرم اومده خيليه)

  8. #8
    کاربر دائمی آواتار debugger
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    Turkey
    پست
    843

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    این ارور چیه موقع باز کردن سورس برنامه میاد

    Error 1 Unexpected error reading metadata from file 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Sys tem.Web.dll' -- 'Not enough storage is available to complete this operation. ' Save Picture to DB

  9. #9

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    با سلام
    چرا هيچ كس به فكر ما مبتدي ها نيست؟ در رابطه با ذخيره عكس در اكسس خيلي جستجو كردم. اطلاعات مفيدي وجود داره اما هيچكدام آنها به زبان برنامه نويسي اكسس نيستن. يا تو vb.net نوشته شدن يا تو vb6 يا C#‎ و ...
    خواهش مي كنم درمورد چگونگي ذخيره و نمايش عكس در فرم توسط زبان برنامه نويسي اكسس مرا راهنمائي كنيد.
    با تشكر

  10. #10

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    سلام
    من تو کد با موضوع "پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داد" به مشکل خوردم و شدیدا به این کد نیاز دارم، امیدوارم کمکم کنید:
    مشکلات:
    - ImageBox
    - FromStream
    - iFormControls
    من کد بالا رو به برنامم که به زبان سی شارپ اضافه می کنم ولی خطاهای بالا رو میده
    آخرین ویرایش به وسیله 84shadmehr84 : یک شنبه 22 مرداد 1391 در 00:05 صبح

  11. #11
    کاربر دائمی آواتار ghasem110deh
    تاریخ عضویت
    اردیبهشت 1393
    محل زندگی
    تهران
    پست
    1,148

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    سلام
    واسه من فرم رو باز نمیکنه ... مثل وقتی که از کامپوننت های dev یا چیز دیگه ای استفاده میشه ولی رو سیستم دیگری نیست !
    بالا هم مینویسه imageBox not fuond ... اشکال چیه ؟

    من بانکم اکسسه ... الان عکس ریختم ولی نمیتونم عکس رو picturebox نمایش بدم ! (نمیخوام از دیتاگرید ویو استفاده کنم)

  12. #12
    کاربر دائمی
    تاریخ عضویت
    مهر 1392
    محل زندگی
    learningtv.ir
    پست
    157

    نقل قول: پاياني بر مبحث ذخيره، بازيابي و به روزرساني عكس در پايگاه داده

    دوستان می توانند برای ذخیره و بازیابی تصویر در بانک اطلاعاتی مثلا SQL Server با روش LINQ از آموزش اینجانب به صورت فیلم آموزشی استفاده کنند.

    خیلی ساده تر از حالت استفاده از ADo.net هست.امتحانش کنید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •