مسائل با هم قاطی شدن بگذارید یک بار دیگه موضوع را طرح کنم من می خواهم هر نوع فایلی اصلا مهم نیست عکس متن یا اجرایی باشه (هر فایلی) را درون دیتا بیس قرار بدهم و دوباره در هنگام نیاز باز خوانی کنم. (مثل افزودن فایل در یاهو به ایمیلها و برداشت انها در هنگام نیاز) برنامه من هم vb و دیتا بیس هم sql server2005 هست. چه راهی پیشنهاد می کنید؟
برای اینکه موضوع ها با هم قاطی نشوند اول این مورد را جواب می دهم. من فرض می کنم شما فقط می خواهید از طریق برنامه نویسی این کار را انجام دهید و از SP استفاده نمی کنید .(برای انتقال فایل با استفاده از SP می بایست فایل در سرور موجود باشه یا آنرا به نحوی به انجا بفرستید)
1- ابتدا یک جدول با یک فیلد Varbinary Max و یک ID برای کلید اصلی در نظر می گیرید (بقیه فیلد های مورد نیاز را خودتان اضافه کنید)
برای ذخیره در DB کافیه فایل را بصورت یک Stream بخوانید ، مهم نیست که فایل شما Text باشه یا Binary . با هر تابعی که خروجی آن []byte (آرایه ای از بایتها) است (معمولا من از Stream استفاده می کنم) این فایل را بخوانید و مقدار خوانده شده را در کد پست قبلی به جای MyFileStream قرار دهید. با اجرا کد فایل در DB دخیره می شود.
برای باز یابی می توانید از کد زیر استفاده کنید (متاسفانه با VB زیاد آشنایی ندارم آنرا یا #C می نویسم و تبدیلش را به عهده شما می گذارم )
SqlCommand cmd = new SqlCommand("Select ExeFile From MyTable Where Id=@Id");
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@Id", YourFileId).SqlDbType=SqlDbType.Int;
byte[] MyFile = (byte[])this.cmd.ExecuteScalar();
System.IO.File.WriteAllBytes(@"C:\YourFolder",MyFi le);
در کد بالا می توانید شرط Where را بر اساس فیلد هایی که ساختید تغییر دهید. در ضمن پیشنهاد می کنم از یک Thread برای این کار استفاده کنید تا در زمان اجرای کد برنامه شما Freeze نشود.
در مورد سوال دوم اگر توضیح من ناکافی است بهتره یک موضوع جدید بسازید و دقیقا مشخص کنید چه کاری می خواهید انجام دهید تا موضوع ها با هم قاطی نشود
موفق باشید
کلمات کلیدی : Insert Image File - ذخیره عکس - ذخیره فایل - بازیابی عکس - بازیابی فایل