رفتن به مطلب
  • 0

چگونه فقط عکس را از دیتابیس آفلاین فراخوانی کنیم


ali2016

سوال

سلام برنامه ای ساختم که در اون مجبور شدم عکس رو در دیتابیس بزارم
دیتا بیس دو تا ستون داره به اسم های value که از نوع intager و یکی به نام aks که از نوع txt هست که عکس هارو تو txt بارگزاری کردم و به value عدد 1 دادم
 

Sub Process_Globals
    Dim s As SQL
End Sub

Sub Globals
	Private ImageView1 As ImageView    اینو تو اکتیویتی بار گزاری کردم
    Dim CUR As Cursor
    Dim bp As BitmapExtended



    Dim sh As Int
    Dim h As Int
End Sub

تو رویداد اکتیویتی کریت هم نوشتم
 

Activity.LoadLayout("layesafesafeha")


اس کیو ال رو فراخوانی کردم

  If File.Exists(File.DirInternal, "saf12.db") = False Then
	File.Copy(File.DirAssets, "saf12.db", File.DirInternal, "saf12.db")
End If
  
   If s.IsInitialized = False Then
	
 s.Initialize(File.DirInternal,"saf12.db",False)

End If

 

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

هیچ چیز اضافه ای لازم نیست.......تو تایپیک های دیگه جستو جو کردم ولی خیییلی پیچیده توضیح داده بودن و همزمان آموزش گذاشتن متن هم گذاشته بودن.

در حالی که من فقط میخوام عکس رو فر خوانی کنم

 

 

پیشا پیش تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ارسال‌های توصیه شده

مشکل ارور حل شد ولی متاسفانه عکس رو تو imagviwe1 نشون نمیده

 

چکار کنم که عکس تو ایمیج ویو نشون داده بشه؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون مشکلم حل شد

اینجای کار ایراد داشت که باید عکس رو بعد از cur.close لود میکردم

مثل کد زیر

 

Sub Button1_Click
	a = a - 1


CUR = sql.ExecQuery("SELECT image FROM tbl")
    CUR.Position = 0
    Dim Buffer() As Byte
    Buffer = CUR.GetBlob("image")
    Dim InputStream1 As InputStream
    InputStream1.InitializeFromBytesArray(Buffer, 0, Buffer.Length)
    bit1.Initialize2(InputStream1)
    InputStream1.Close
	CUR.Close
		ImageView1.Bitmap = bit1
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

از این تابع برای گرفتن عکس به صورت Blob از دیتابیس استفاده کنید »

Sub ReadBlob As Bitmap
    Dim Cursor1 As Cursor
	
    Cursor1 = SQL1.ExecQuery("SELECT * FROM tbl WHERE id=1")
    Cursor1.Position = 0
	
    Dim Buffer() As Byte 
    Buffer = Cursor1.GetBlob("image")
    Dim InputStream1 As InputStream
    InputStream1.InitializeFromBytesArray(Buffer, 0, Buffer.Length)
   
    Dim Bitmap1 As Bitmap
    Bitmap1.Initialize2(InputStream1)
    InputStream1.Close
   Return Bitmap1
End Sub

 

نحوه استفادش »

ImageView.Bitmap = ReadBlob

 

تغییری که باید بدید توی قسمت کوئری هستش، بنده به عنوان مثال آیدی 1 رو اومدم عکسش رو گرفتم، شما می تونید به صورت حلقه هم بگیرید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ببخشید این کدی که دادم فقط فیلد اولو لود میکنه

اگه بخوام بگم فیلد مثلا سوم رو لود کنه باید چطور بهش بفهمونم؟

لود کنه و تو همون imageviw1 نشون بده.

میخوام وقتی رو بوتون کلیک شد برای بار دوم فیلد اول رو کلا فراموش کنه و عکس موجود در فیلد دوم رو نمایش بهد در ایمیج ویو 1

و وقتی برای بار سوم کلیک شد فیلد سوم رو لود کنه و نمایش بده و همینطوری تا فیلد پنجم

 

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خب راحت هستش

یک متغییر توی Globals تعریف می کنید »

Dim idIncrease As Int = 1

و بعد به این شکل کد رو می نویسید »

 

خب کد رو باید به این شکل بنویسید ( کد رو کامل ننوشتم ) :

Sub ReadBlob(id As Int) As Bitmap
    Dim Cursor1 As Cursor
	
    Cursor1 = SQL1.ExecQuery("SELECT * FROM tbl WHERE id=" & id)
    Cursor1.Position = 0
	
    Dim Buffer() As Byte 
    Buffer = Cursor1.GetBlob("image")
    Dim InputStream1 As InputStream
    InputStream1.InitializeFromBytesArray(Buffer, 0, Buffer.Length)
   
    Dim Bitmap1 As Bitmap
    Bitmap1.Initialize2(InputStream1)
    InputStream1.Close
   Return Bitmap1
End Sub

ببنید ما اینجا ایدی رو میدیم به کوئری تا اطلاعات اون رکورد رو بگیره.

نحوه استفاده از تابع بالا واسه دکمه »

Dim Cr As Cursor = SQL.ExecQuery("SELECT * FROM tbl")
If idIncrease < Cr.RowCount Then
 ImageView1.Bitmap = ReadBlob(idIncrease)
 idIncrease = idIncrease + 1
 Else
 ToastMessageShow("Latest Record",False)
End If

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام آیا این 

("SELECT * FROM tbl WHERE id=1")

 به این معناست که باید دو تاستون درست کنم که یکیش به اسم image هست که خودم ساختمش و از نوع blob هست و دیگری id که از نوع intager هست؟

و همچنین باید به ستون آیدی شماره بدم مثلا سطر 1 از ستون id سطر 2  از  id  سطر 3 از ستون id

یا خیر نیازی نیست دیگه ستون اضافه کنم به sql؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...