سلام.
برای ذخیره کردن عکس در فیلدی از جداول پایگاه داده خود در Sql Server باید نوع فیلد را Image انتخاب کرد البته برای پایگاه داده اکسس باید نوع فیلد داده را OLE Object انتخاب کرد.
فرض می کنم جدولی با نام Student به صورت زیر در پایگاه داده ای با نام School داریم:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای ذخیره سازی عکس باید آنرا به صورت مجموعه ای از بایتها ذخیره کرد برای این کار در NET. کلاسی با نام فایل داریم که در این کلاس متدی به نام ReadAllBytes وجود دارد این متد آدرس عکس در کامپیوتر را گرفته و آنرا به صورت مجموعه ای از بایتها می خواند .
برای راحتی کار تابعی به نام ConvertImageToByte را به صورت زیر تعریف می کنیم:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این تابع آدرس عکس موجود در کامپیوتر را گرفته و آنرا به صورت مجموعه ای از بایتها خوانده و در متغیری به نام picture که به صورت آرایه ای از بایت تعریف شده ذخیره می کند.
بقیه کار نوشتن دستور Insert برای درج کردن رکوردی در پایگاه داده :
فرض می کنیم عکس با نام test.png در کنار فایل exe برنامه داریم
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دستورات بالا را در رویداد کلیک button خود بنویسید.
حالا اگر به دیتابیس خود بروید و جدول خود را باز کنید می بینید در قسمت فیلد مربوط به عکس عبارت <Binary data> نوشته شده است اما اگر می خواهید کدهای عددی را ببینید در یک New Query دستور زیر را اجرا کنید:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نکته 1 : از نوع داده ای image فقط برای ذخیره سازی عکس استفاده نمی شود و می توان از این نوع برای ذخیره سازی فیلم و موسیقی و هرچیز دیگر استفاده کرد.
نکته 2 : به جای نوع داده image می توان از نوع (varbinary(max استفاده کرد که نحوه نوشتن دستورات آن هیچ تفاوتی ندارد که توصیه می شود ازاین نوع داده استفاده کنید.
موفق باشید
.