نمایش نتایج 1 تا 12 از 12

نام تاپیک: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

  1. #1
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    Thumbs up سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    سلام خدمت دوستان:
    یک نمونه سورس جهت ذخیره و بازیابی فایل ها با امکانات زیر می ذارم امید وارم برای دوستان مفید واقع بشه:
    1-ذخیره و بازیابی فایل از هر دو پایگاه داده SQL Server و اکسس(JET 4.0)
    (اجرای کامل با SQL Server 2008 و بالاتر)
    2-درصد پیشرفت ذخیره و بازیابی
    (نکته:درصد پیشرفت برای بازیابی از دیتابیس اکسس غیر فعال خواهد بود!)
    3-قابلیت سوئیچ بین دو نوع پایگاه داده در یک فرم!
    (فقط با یک کمبو باکس بین دو پایگاه داده سوئیچ انجام می شه!)
    4-ایجاد RunTime هر دو پایگاه داده
    اینم تصویر:



    همون طور که گفتم درصد پیشرفت برای بازیابی از دیتابیس اکسس خغر فعاله چون تابعی جهت خواندن تکه تکه از OLEObject رو نتونستم پیدا کنم هر کدوم از دوستان و اساتید که راه حلی می دونن لطف کنن بگن تا این قسمت هم کامل بشه!

    دانلود کنید:


    منتظر نظرات ، انتقادات و پیشنهادتن شما هستم

    DbFileStoreWithPrg.rar

    تاپیک های مرتبط:




    آخرین ویرایش به وسیله فرید نجفلو : جمعه 04 فروردین 1391 در 16:11 عصر

  2. #2

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    سلام
    برنامه با دیتابیس اکسس درست کار میکنه ولی در SQL Server خطای زیر رو میده:
    عدم توانایی در ذخیره فایل در پایگاه داده Incorect Syntext '+'

  3. #3
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    نقل قول نوشته شده توسط ali190 مشاهده تاپیک
    سلام
    برنامه با دیتابیس اکسس درست کار میکنه ولی در SQL Server خطای زیر رو میده:
    عدم توانایی در ذخیره فایل در پایگاه داده Incorect Syntext '+'
    سلام
    اولا از توجه تون ممنون
    ولی من باز به خاطر شما تست کردم مشکلی که میگید رو ندیدم فقط یه مورد بود اینکه یه جا کانکشن رو نبسته بودم که اونم اصلاح شد اگه خواستید دوباره دانلود کنید یا خودتون اصلاح کنید(انتهای متد StoreFileInDB یک Finally اضافه کنید داخلش بنویسید CloseConn(GlobalConnection))
    اگه لطف کنید دقیق تر نگاه کنید ممنون می شم سورس هم که خدمتتون هست
    واسه اینکه راحت تر کنید من فقط تو یه تابع (Functions.SaveFileIntoDB) از + استفاده کردم و یه بریک پوینت هم تو SqlRunCmd بذارید!


  4. #4

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    سلام
    باز هم همون خطا رو میده
    آخرین ویرایش به وسیله ali190 : جمعه 04 فروردین 1391 در 00:18 صبح

  5. #5

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    راستی یه نکته ای رو کتوجه شدم
    زمانیکه فایلهای کوچیک رو ذخیره میکنی مشکل نداره
    مثلاً من الان یک عکس 124 KB رو ریختم مشکلی نداشت
    ولی وقتی مثلاً میخوای یه MP3 برزی به مشکل میخوری
    امتحان کنید
    ممنونم
    یاعلی

  6. #6
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    همون طور که گفتم اصلاحات در مورد خطای شما نبود!
    برنامه رو اجرا کنید تو تابع Functions.SaveFileIntoDB تو خطی که sqlRunCmd رو صدا زدم یه بریک پوینت بذارید حالا دکمه "ذخیره فایل در پایگاه داده" رو بزنید وقتی اجرا بریک شد مقدار متغیر TSQL رو نگاه کنید(مثلا با Shift+F9) و بگید
    واینکه شما فقط با یه فایل که تست نمی کنید.فایل ها با پسوند هاو مسیر های متفاوت رو امتحان کنید
    راستی با اینکه فکر نکنم تاثیر کذار باشه ولی میشه بگید نسخه SQL Server شما چنده؟

    هر موردی بود منم در جریان بذارید ممنون

  7. #7

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    نسخه SQL من SQL Server 2005 نسخه Express هست
    راستی دوباره تست کردم
    فایل با تا حجم 1 مگابایت رو بدون مشکل آپلود میکنه
    ولی بیشتر رو نه!

  8. #8
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    نقل قول نوشته شده توسط ali190 مشاهده تاپیک
    نسخه SQL من SQL Server 2005 نسخه Express هست
    راستی دوباره تست کردم
    فایل با تا حجم 1 مگابایت رو بدون مشکل آپلود میکنه
    ولی بیشتر رو نه!
    بله حق باشماست!
    ولی تقصیر من هم نیست!
    همین الان با 2005 تست کردم با همون خطا مواجه شدم!
    چون من خودم با 2008 نسخه Express نوشتم خطلایی ندیدم پس در این صورت جهت استفاده باید نسخه SQL رو عوض کنید(حالا چرا 2005 استفاده می کنید دیگه نسخه 2012 که اومده!)
    (من هر توضیحی بدم مربوط به 2008 خواهد بود)
    در مورد یک 1 مگابایت هم که طبق تصویر من خودم یک 4MB رو ذخیره کردم ولی دیگه فکر نکنم تا این حد باشه
    حدکثر حجم فایل شما برای ذخیره در SQL برابر است با :
    2^31-1

    یعنی چیزی حدود 2GB که این تفاوت با 1MB سر به فلک می زنه!
    البته من یک احتمال می دم مشکل باز از 2005 بودنه
    چون من به صورت پیش فرض هر عملیات ذخیره و بازیابی رو جهت تعادل بین کارایی و جلوه های نمایش بین 1MB تا 20MB محدود کردم!(البته شما می تونید با تغییر دو خط در قسمت جنرال کلاس فرم تغییرش بدید و سایر تنظیمات نیز همون جا هستن)

    پس طبق گفته بالا برنامه برای هر فایل تا حجم 1MB از عملگر = استفاده خواهد کرد اما وقتی حجم بیشتر از این شد چون تعداد نوشتن ها بیشتر از یک بار می شه (همون خاصیتی که درصد پیشرفت رو قابل نمایش می کنه) به صورت هوشمند در بار اول از = و بعد از اون =+ رو استفاده می کنه و مشکل همین جاست که 2005 از =+ پشتیبانی نمی کنه!

    در ضمن یه نکته رو هم اینجا باید بهتون بکم که مهمه:
    اگه دقت کرده باشد من من دیگه از نوع فیلد Image استفاده نکردم و شما هم دیگه استفاده نکنید!
    چون از نسخه 2012 این نوع داده از SQL Server حذف شد و تاکید بر استفاده از نوع VarBinary(Max) داره!

  9. #9

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    سلام
    ممنون از توضیحاتتون
    امکانش هست تغییراتی رو که فرمدین در سورس اعمال بفرمائید تا در SQL 2005 هم قابلیت استفاده داشته باشه
    ممنونم
    یاعلی

  10. #10
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    نقل قول نوشته شده توسط ali190 مشاهده تاپیک
    سلام
    ممنون از توضیحاتتون
    امکانش هست تغییراتی رو که فرمدین در سورس اعمال بفرمائید تا در SQL 2005 هم قابلیت استفاده داشته باشه
    ممنونم
    یاعلی
    من نگفتم تغییراتی ایجاد کرم !
    اصلا نمی تونم ایجاد کنم چون من چطور تغییر بدم که در حالی که پشتیبانی نمی کنه!

    اگر هم می خواهید از درصد پیشرفت صرف نظر کنید در کد های فرم این دو خط رو :

        Private Const MinBlockSize = OneMB
    Private Const MaxBlockSize = OneMB * 5 '5MB


    با این کد ها جایگزین کنید :

        Private Const MinBlockSize = (2 ^ 31) - 1 '~2GB
    Private Const MaxBlockSize = (2 ^ 31) - 1 '~2GB

    خطوط اصلی رو به صورت کامنت شده نگه دارید تا در صورت تغییر نسخه SQL بتونید دوباره ازش استفاده کنید!

    من هم نمی تونم این تغییرات رو در پروژه اصلی ایجاد کنم چون اون وقت حق دوستانی که از 2008 و بالاتر استفاده می کنن تضییع می شه؟
    باز هم از اینکه به من کمک می کنید تا چیزهی بیشتری یاد بگیرم ازتون بسیار تشکر می کنم

  11. #11
    کاربر جدید آواتار suncity
    تاریخ عضویت
    دی 1389
    محل زندگی
    مشهد
    سن
    35
    پست
    25

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    سلام.
    دست شما درد نکنه خیلی مفید هست.
    ولی من کلا گیج شدم، من یه تابع میخوام یه فایل بگیره و ذخیره کنه.
    و یک تابع برا دانلودش توی asp
    ممکنه کمکم کنید؟ هرچی فایل رو خوندم چیزی دستگیرم نشد

  12. #12
    کاربر دائمی آواتار فرید نجفلو
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    تبریز
    پست
    1,189

    نقل قول: سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!)

    سلام
    اگه تجربه تون کم باشه حق دارید متوجه نشید
    همین اول اومدید ذخیره تدریجی (چند مرحله ای) فایل اونم با قابلیت سوئیچ بین دو نوع دیتابیس متفاوت رو خوندید !

    این یه نمونه خیلی ساده:

        Private Sub InsertWithFile(FilePath As String)

    Dim DataBuffer = IO.File.ReadAllBytes(FilePath)
    Dim FileName = IO.Path.GetFileName(FilePath)

    Dim Cmd As New SqlClient.SqlCommand

    Cmd.CommandText = "INSERT INTO [Table1] ([FileName],[FileData]) VALUES (@FileName,@FileData)"
    Cmd.Parameters.AddWithValue("@FileName", FileName)
    Cmd.Parameters.AddWithValue("@FileData", DataBuffer)

    Using Conn As New SqlClient.SqlConnection("Data Source=.;Initial Catalog=TestDb;Integrated Security=True")
    Cmd.Connection = Conn
    Conn.Open()
    Cmd.ExecuteNonQuery()
    Conn.Close()
    End Using
    End Sub

    Private Function GetFileFromDB(FileID As Integer) As Byte()

    Dim Cmd As New SqlClient.SqlCommand
    Cmd.CommandText = "SELECT [FileName] FROM [Table1] WHERE ID =" & FileID

    Using Conn As New SqlClient.SqlConnection("Data Source=.;Initial Catalog=TestDb;Integrated Security=True")
    Cmd.Connection = Conn
    Conn.Open()
    Dim Result = CType(Cmd.ExecuteScalar(), Byte())
    Conn.Close()
    Return Result
    End Using
    End Function

    Private Sub LoadPicFromDb()
    Dim FileData = GetFileFromDB(1)
    Dim MS As New IO.MemoryStream(FileData)
    PictureBox1.Image = Image.FromStream(MS)
    End Sub




    در ضمن دوستانی که می خوان از پروژه پست اول استفاده کنن می تونن تابع SaveFileIntoDB رو به صورت زیر تغییر بدن (خطوط ابتدایی) تا برای SQL Server بشه از 2005 استفاده کرد و هم سرعت ذخیره سای رو بالاتر ببرن

            Try

    Dim UpdOperator As String = "= @image"
    If Append Then
    If GetConnectionType() = ConnectionType.SQlServer Then
    UpdOperator = ".WRITE(@image,NULL,NULL)"
    ElseIf GetConnectionType() = ConnectionType.Access Then
    UpdOperator = " = " & ColumnToStore & " + @image"
    End If
    End If

    Dim TSQL As String = ""
    TSQL = ""
    TSQL &= String.Format("Update {0} SET {1}{2}", Table, ColumnToStore, UpdOperator) & vbNewLine
    آخرین ویرایش به وسیله فرید نجفلو : سه شنبه 17 بهمن 1391 در 03:11 صبح

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

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