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

نام تاپیک: نمایش عکس از دیتابیس

  1. #1

    نمایش عکس از دیتابیس

    من در انجمن جستجو کردم برای ذخیره عکس این کد را پیدا کردم و درست کار می کنه و مشکلی نداری حالا میخوام که این عکس را در PictureBox2 نمایش بدم چطور این کار را کنم
    در صورتی که نمونه کدی برای هم ذخیره هم نمایش دارید لطفا دریغ نفرمایید
    چطور عکس را بازخوانی کنم
    من عکسمم را با این کد در دیتابیس اکسس ذخیره کردم
           Dim ms As New IO.MemoryStream
    PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
    Dim arrImage() As Byte = ms.GetBuffer

    ms.Close()

    Dim isConnecting As Boolean = True
    Dim imageStream As IO.MemoryStream = New IO.MemoryStream()
    While isConnecting
    Try

    Dim Connection As New OleDb.OleDbConnection("Provider=microsoft.jet.oled b.4.0; data source=" & AppPath & ";Jet OLEDB:Database Password=7921496;")
    Dim str_insert As String = _
    "INSERT INTO `User Data` (imag)" & _
    "VALUES (@image)"


    Dim cmd As New OleDb.OleDbCommand(str_insert, Connection)
    cmd.Parameters.Add(New OleDb.OleDbParameter("@image", arrImage)) '.Value = arrImage

    Connection.Open()
    cmd.ExecuteNonQuery()
    Connection.Close()


    isConnecting = False

    MsgBox("image saved")

    Catch Exc As OleDb.OleDbException
    MessageBox.Show(Exc.ToString, " Exception Error!", _
    MessageBoxButtons.OK, MessageBoxIcon.Error)
    Exit While
    Catch exc As Exception

    End Try
    End While


    وبرای ذخیره از این کد
    Dim strConnectionString AsString = "Provider=microsoft.jet.oledb.4.0; data source=" & AppPath & ";Jet OLEDB:Database Password=7921496;"
    Dim ConnectionName AsNew OleDb.OleDbConnection(strConnectionString)
    Dim CommandName As OleDb.OleDbCommand
    ConnectionName.Open()
    CommandName = New OleDb.OleDbCommand("SELECT `imag` FROM `User Data`", ConnectionName)
    CommandName.CommandType = CommandType.Text
    Try
    Dim Bt() AsByte = CType(CommandName.ExecuteScalar(), Byte())
    Dim Mb AsNew System.IO.MemoryStream(Bt)
    PictureBox2.Image = Image.FromStream(Mb)
    Catch ex As Exception
    MsgBox(ex.Message)
    EndTry
    ConnectionName.Close()

  2. #2
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059

    ذخیره و بازیابی عکس از دیتا بیس

    سلام
    کاری با کد شما ندارم، (شاید جالب نباشه ولی من همیشه به کد خودم بیشتر اعتماد دارم و ترجیح میدم کد را از اول بنویسم ولی از کد دیگران یا dll شان استفاده نکنم!!!) این کد را همین الآن نوشتم تست نکردم ولی دلیلی برای کار نکردن ندارد!

    فرض شده جدولی با نام tablename و دو فیلد keyfield عددی و imagefield باینری دارد. و فرض شده سطر در بانک وجود دارد و ما الآن قصد تغییر آن را داریم میتوانید دستور را به Insert تغییر دهید، اگر تصویری در متغییر Imagefield موجود نباشد دستور در بانک مقدار Null را میریزید و در اصل بدون حذف کل سطر در بانک صرفاً فیلد تصویر خالی میشود.

    ذخیره: (keyfield را که حاوی primarykey جدول است به همراه imagefield میدهید و در سطر keyfield تصویر مورد نظر اصلاح میشود.)

    Dim imagefield As System.Drawing.Image = Nothing
    Dim keyfield As Integer
    '...
    '...
    'imagefield = ???
    'keyfield =???
    '...
    Using dbCon As New System.Data.OleDb.OleDbConnection("ConnectionString")
    Using dbCom As New System.Data.OleDb.OleDbCommand("UPDATE [tablename] SET [imagefield]=@imagefield WHERE ([keyfield]=@keyfield)", dbCon)
    dbCom.Parameters.AddRange( _
    New System.Data.OleDb.OleDbParameter() { _
    New System.Data.OleDb.OleDbParameter("@imagefield", System.Data.OleDb.OleDbType.VarBinary, 0, Nothing, True, CByte(0), CByte(0), Nothing, System.Data.DataRowVersion.Current, Nothing), _
    New System.Data.OleDb.OleDbParameter("@keyfield", System.Data.OleDb.OleDbType.Integer, 0, Nothing, False, CByte(0), CByte(0), Nothing, System.Data.DataRowVersion.Current, keyfield)})

    If imagefield Is Nothing Then
    dbCom.Parameters.Item(0).Value = System.DBNull.Value
    Else
    Using strm As New System.IO.MemoryStream
    imagefield.Save(strm, System.Drawing.Imaging.ImageFormat.Jpeg)
    dbCom.Parameters.Item(0).Value = strm.ToArray
    End Using
    End If

    dbCon.Open()
    dbCom.ExecuteNonQuery()
    End Using
    End Using


    بازیابی: (keyfield را که primarykey جدول است میدهید تا سطر مورد نظر مشخص شود، imagefield حاوی عکس موجود در فیلد مربوط خواهد شد.)

    Dim imagefield As System.Drawing.Image = Nothing
    Dim keyfield As Integer

    Using dbCon As New System.Data.OleDb.OleDbConnection("ConnectionString")
    Using dbCom As New System.Data.OleDb.OleDbCommand("SELECT [imagefield] FROM [tablename] WHERE ([keyfield]=@keyfield)", dbCon)
    dbCom.Parameters.AddWithValue("@keyfield", keyfield)


    dbCon.Open()
    Dim buffer() As Byte = TryCast(dbCom.ExecuteScalar, Byte())
    dbCon.Close()


    If buffer IsNot Nothing AndAlso buffer.Length > 0 Then
    Using strm As New System.IO.MemoryStream(buffer)
    imagefield = System.Drawing.Image.FromStream(strm)
    End Using
    End If
    End Using
    End Using

  3. #3

    dim bitmap as new bitmap=(new system.io.bitmap(bt))

    bt همان ارایه ای از باینری هاست که از دیتابیس خوندی
    حالا اون بیت مپ رو به picture box بده

  4. #4
    متشکر از کد شما اما میشه بگید که فیلد keyfield برای چی هست
    از این قسمت کد شما ایراد می گیره پیغام خیلی زیاد هست نمی تونم براتون بزارم
     
    New System.Data.OleDb.OleDbParameter("@imagefield", System.Data.OleDb.OleDbType.VarBinary, 0, Nothing, True, 0, 0, Nothing, System.Data.DataRowVersion.Current, strm.ToArray), _
    New System.Data.OleDb.OleDbParameter("@keyfield", System.Data.OleDb.OleDbType.Integer, 0, Nothing, False, 0, 0, Nothing, System.Data.DataRowVersion.Current, keyfield)})

    بعد هم اینکه من میخوام عکسی را که دیتابیس بازیابی می کنم در یک PictureBox نشان داده بشه من چطوری این کار را بکنم

  5. #5
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    keyfield یک فیلد عددی است که کلید جدول است (primaryKey) مگر جدول شما primaryKey ندارد؟؟؟؟؟

    شاید برای INSERT نیاز نباشد ولی بیچاره چطور بفهمد که کدام سطر را باید UPDATE یا DELETE کند؟؟؟؟؟؟

    در مورد خطا هم خیلی عجیب است!!!!!
    بانکتان Access است؟؟؟؟
    نکند شی dbCom را از نوع SqlCommand باشد؟؟؟؟
    keyfield و strm هنوز وجود دارند دیگر انشا ا....؟؟؟؟
    نمیشود یک جوری، زیر سبیلی(!) پیغام خطا را بفرستید؟؟؟؟ مثلاً کلش را PM یا ایمیل کنید؟؟؟
    ضمناً کد جدید یک جریقی تغییر کرده را هم تست کنید!

    در مورد بازیابی هم که کدش را گذاشته بودم برادر!!!!
    تصویر شما در متغییر imagefield ریخته میشود و به راحتی میتوانید با تک خط زیر تصویر را به pictureBox منتقل کنید
    Me.PictureBox1.Image = imagefield

    البته الآن دو خط از دستورات فوق را تغییر خواهم داد ولی ربطی به خطای شما ندارد!
    به جای CType دستور TryCast را میگذارم تا خطای احتمالی ناشی از null بودن برطرف شود.
    و در کد اولی هم خطی اضافه میکنم تا اگر مقدار imagefield خالی و برابر Nothing بود در بانک مقدار null ریخته شود.
    دو دستور CByte را هم اضافه میکنم که شاید اگر در حالت پسندیده Strict On بوده اید، دلیل خطا همین بوده.

    جمیعاً خوش باشید.

  6. #6
    ببخشید واقعا شرمنده انقدر سره این برنامه خسته شدم که می خوام برنامه نویسی را ول کنم اگر ممکن هست این برنامه را برای من به صورت سلوشن این را بگزارید با بانک اطلاعات اکسس چون دوباره خطا می ده
    در قسمت :

    Using dbCon As New System.Data.OleDb.OleDbConnection("ConnectionStrin  g")

    این خطا را می ده
     
    Format of the initialization string does not conform to specification starting at index 0.

  7. #7
    کاربر دائمی آواتار saeed_rezaei
    تاریخ عضویت
    آبان 1385
    محل زندگی
    ایلام
    پست
    430
    نقل قول نوشته شده توسط VisualStudio مشاهده تاپیک
    من در انجمن جستجو کردم برای ذخیره عکس این کد را پیدا کردم و درست کار می کنه و مشکلی نداری حالا میخوام که این عکس را در PictureBox2 نمایش بدم چطور این کار را کنم
    در صورتی که نمونه کدی برای هم ذخیره هم نمایش دارید لطفا دریغ نفرمایید
    چطور عکس را بازخوانی کنم
    این هم یه نمونه سولیشن
    فایل های ضمیمه فایل های ضمیمه

  8. #8
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    نقل قول نوشته شده توسط VisualStudio مشاهده تاپیک
    ببخشید واقعا شرمنده انقدر سره این برنامه خسته شدم که می خوام برنامه نویسی را ول کنم اگر ممکن هست این برنامه را برای من به صورت سلوشن این را بگزارید با بانک اطلاعات اکسس
    چشم! تا چند ساعت آینده اگر زنده بودم! البته الآن دیدم یکی از دوستان هم چیزی برای donload گذاشته!

    نقل قول نوشته شده توسط VisualStudio مشاهده تاپیک
    چون دوباره خطا می ده
    عزیز دل بابا!!! مشخص است ! ConnectionString رشته اتصال شما است، من آن را نموهنه نوشتم که یعنی شما در این مکان باید ConnectionString خود را قرار دهید و provider مسیر بانک را مشخص کنید!!! فکر کردم واضح است و شما خودتان ConnectionString مطلوبتان را با توجه به مسیر و نوع بانک آنجا قرار میدهید!!!!
    چیزی شبیه این

    "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=""C:\news.mdb"""

  9. #9
    کاربر دائمی آواتار __H2__
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    یک جایی بین Framework و نارمک!
    پست
    1,059
    سلام
    گرچه از نوشتن پروژه های این تیپی خوشم نمی آید ولی برای روی ماه (ندیده) شما کدش را نوشتم!!!!!!

    چیز بدی نشد! حتی میتوانید به عنوان یک گالری شخصی استفاده اش کنید و تبیعتاً میتوانید امکاناتش را بیشتر هم کنید، به عنوان نمونه دو تصویر از یک بازی را هم درش جای دادم!

    (حجم حدود 103 کیلو)
    http://www.h02.ir/Download.aspx?File...InDatabase.zip

  10. #10
    سلام
    گرچه از نوشتن پروژه های این تیپی خوشم نمی آید ولی برای روی ماه (ندیده) شما کدش را نوشتم!!!!!!

    چیز بدی نشد! حتی میتوانید به عنوان یک گالری شخصی استفاده اش کنید و تبیعتاً میتوانید امکاناتش را بیشتر هم کنید، به عنوان نمونه دو تصویر از یک بازی را هم درش جای دادم!

    (حجم حدود 103 کیلو)
    www.h02.ir/Download.aspx?File=PictureInDatabase.zip
    واقعا متشکر دوست عزیز هیچ کس به اندازه شما من را یاری نکرده در این میدان (برنامه نویسی) امیدوارم روزی سعادت دیدار شما را پیدا کنم و زحمات شما را جبران کنم

  11. #11

    Smile Tashakor

    salam aghay _______H2______ Vaghan In COde Akhri Ke Be Sorat PRG gozashtin Fogholade bod
    hame chish akhresh bod
    man ba in code shoma kole nazaram dar moredr cod neveshtan taghir karde
    Tashakore faravane mano bepazirin

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

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