PDA

View Full Version : لود عکس از دیتابیس



matin792
چهارشنبه 30 خرداد 1386, 21:47 عصر
سلام.
عکسهای مورد نیاز رو اکسس ذخیره کردم.حالا می خوام با هر کلیک بین 6 تا 8 عکس روی فرم ظاهر شود.تا به آخر(عکسها به ترتیب نمایش داده می شود و رندم نیست).

CodeMasterX
پنج شنبه 31 خرداد 1386, 03:24 صبح
برای بازیابی عکس ها از دیتابیس :



Dim bm As BindingManagerBase
Dim MyDataRow As DataRow

'Bind selected row to MyDataRow.
bm = Me.DataGridView1.BindingContext(Me.DataGridView1.D ataSource, Me.DataGridView1.DataMember)
MyDataRow = CType(bm.Current, DataRowView).Row

Dim oleBytes() As Byte = MyDataRow.Item("ImageFile")
'Create file stream.
Dim fileStream As New FileStream("C:\" & MyDataRow.Item("ImageName"), FileMode.Create, FileAccess.Write)

fileStream.Write(oleBytes, 0, oleBytes.Length)
fileStream.Close()



برای نشون دادن عکس میتونید با یع تغییر ساده در کد بالا (استفاده از فضای نام Drawing.Image,Drawing.Imaging) از رکورد مورد نظر یه آبجکت Image بسازین و عکس رو توش بریزین و نشون بدین.

برای نشون دادن عکس ها بصورت Thumbnail روی فرم هم برنامه زیر رو دانلود کنید (کار خودمه).

موفق باشید.

matin792
پنج شنبه 31 خرداد 1386, 18:46 عصر
سلام codmasterx
azat mamnoonam ke rahkar pishnahad dadi.man az in rah estefade kardam va javab dad.
Dim strConnectionString As String = "Data Source=db1.mdb;Jet OLEDB:Engine Type=5;Provider=Microsoft.Jet.OLEDB.4.0"
Dim ConnectionName As New OleDb.OleDbConnection(strConnectionString)
Dim CommandName As OleDb.OleDbCommand

ConnectionName.Open()
CommandName = New OleDb.OleDbCommand("SELECT adr2 FROM rivanadu", ConnectionName)
CommandName.CommandType = CommandType.Text

Try
Dim Bt() As Byte = CType(CommandName.ExecuteScalar(), Byte())
Dim Mb As New System.IO.MemoryStream(Bt)
PictureBox1.Image = Image.FromStream(Mb)
Catch ex As Exception
MsgBox(ex.Message)
End Try

ConnectionName.Close()




vali moshkele aslie man ine ke forme man 8 ta picture box dare ke bayad har aks tooye ye fild zakhire beshe , va dar akhar aks haro ba ye klick beshe too hamoon pictur box load kard.
ham too zakhirashoon moshkel daram va ham tooye load

matin792
پنج شنبه 31 خرداد 1386, 18:49 عصر
با این کد می تونم یک عکس رو ذخیره کنم


Dim ds As New DataSet


'در این قسمت شما به دیتابیس متصل می شوید اسم دیتابیس gldb.mdb
ds.Clear()
s1 = "provider=microsoft.jet.oledb.4.0;data source =" + Application.StartupPath + "\db1.mdb; jet oledb:database password=;"
con = New OleDbConnection(s1)
con.Open()
s2 = "select * from rivanadu"
da = New OleDbDataAdapter(s2, con)
da.Fill(ds, "rivanadu")

newrow = ds.Tables("rivanadu").NewRow

'در این قسمت شما یک پیکچرباکس حاوی یک عکس دارید
'فیلدی است که عکس درونش ذخیره می شود temp1
Dim fs As New IO.FileStream("adr2", System.IO.FileMode.Create)
PictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim aArray(CType(fs.Length, Integer) - 1) As Byte
fs.Position = 0
fs.Read(aArray, 0, aArray.Length)
newrow.Item("adr2") = aArray
fs.Close()
'و در اخر اطلاعات را از دیناست به جدول بر می گردانم

ds.Tables("rivanadu").Rows.Add(newrow)
cb = New OleDbCommandBuilder(da)
da = cb.DataAdapter
da.Update(ds, "rivanadu")
PictureBox1.Image = Nothing
MsgBox("اطلاعات ثبت شد")
وبا این کد یک عکس رو می تونم لود کنم

Dim strConnectionString As String = "Data Source=db1.mdb;Jet OLEDB:Engine Type=5;Provider=Microsoft.Jet.OLEDB.4.0"
Dim ConnectionName As New OleDb.OleDbConnection(strConnectionString)
Dim CommandName As OleDb.OleDbCommand

ConnectionName.Open()
CommandName = New OleDb.OleDbCommand("SELECT adr2 FROM rivanadu", ConnectionName)
CommandName.CommandType = CommandType.Text

Try
Dim Bt() As Byte = CType(CommandName.ExecuteScalar(), Byte())
Dim Mb As New System.IO.MemoryStream(Bt)
PictureBox1.Image = Image.FromStream(Mb)
Catch ex As Exception
MsgBox(ex.Message)
End Try

ConnectionName.Close()

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