چگونه میتوانم ازطریقvb یک فیلد عکس را وارد database بنمایم (access)
با تشکر
Printable View
چگونه میتوانم ازطریقvb یک فیلد عکس را وارد database بنمایم (access)
با تشکر
در نمونه کد زیر فرض شده:
دارای یک دیتابیس در ACCESS بنام ImageDB هستیم که یک جدول با نام tblImage دارد و شامل یک فیلد از نوع OLE Object بنام fldImage است.
در برنامه VB یک فرم شامل Component های زیر داریم:
PicImage : Picture Box
CmdSave: Command Button ‘ Saves the picture of PicImage in Database
CmdLoad : Command Button ‘ Loads the content of fldImage in picImage
اگر از( Microsoft ActibeX Data Object Library 2.5 (ADO 2.5 به بالا استفاده میکنید، از این روش استفاده کنید
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim mstream As New ADODB.Stream
()Private Sub Form_Load
& conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path
"ImageDB.mdb;Persist Security Info=False\"
rs.Open "select * from TblImage", conn, adOpenDynamic, adLockOptimistic
mstream.Type = adTypeBinary
mstream.Open
End Sub
()Private Sub cmdSave_Click
mstream.LoadFromFile (ImageFileName) ‘ ImageFileName is the path of PicImage Picture
rs.AddNew
rs.Fields("Image").Value = mstream.Read
rs.Update
End Sub
()Sub cmdLoad_Click
mstream.Write rs.Fields("Image").Value
mstream.SaveToFile App.Path & "\1.gif", adSaveCreateOverWrite
(" PicImage.Picture = LoadPicture(App.Path & "\1.gif
End Sub
دوست عزیز در این زمینه در سایت برنامه نویس بحثهای زیادی شده است که می توانید به علاوه بر جوابی که دوست دیگرمان داده اند به آنها هم مراجعه کنید. در ضمن در وبلاگ زیر هم مقاله اب در این زمینه وجود دارد:
http://vblog.persianblog.com
سلام بچه ها
اینم یه مثال برای ذخیره عکس در دیتا بیس اکسس گه البته می تونین در یه ماژول قرار بدین و استفاده کنید
Imports System
Imports System.IO
Imports System.Data
Public Class SaveImage
Shared Sub main()
'Delaclare a file stream object
Dim o As System.IO.FileStream
'Declare a stream reader object
Dim r As StreamReader
Dim jpgFile As String
Console.Write("Enter a Valid .JPG file path")
jpgFile = Console.ReadLine
If Dir(jpgFile) = "" Then
Console.Write("Invalid File Path")
Exit Sub
End If
'Open the file
o = New FileStream(jpgFile, FileMode.Open, FileAccess.Read, FileShare.Read)
'Read the output in a stream reader
r = New StreamReader(o)
Try
'Declare an Byte array to save the content of the file to be saved
Dim FileByteArray(o.Length - 1) As Byte
o.Read(FileByteArray, 0, o.Length)
'Open the DataBase Connection, Please map the datasource name to match the Database path
Dim Con As New System.Data.OleDb.OleDbConnection("Provider=Mi crosoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=DbImages.mdb")
Dim Sql As String = "INSERT INTO DbImages (Pic,FileSize) VALUES (?,?)"
'Declare a OleDbCommand Object
Dim CmdObj As New System.Data.OleDb.OleDbCommand(Sql, Con)
'Add the parameters
CmdObj.Parameters.Add("@Pic", System.Data.OleDb.OleDbType.Binary, o.Length).Value = FileByteArray
CmdObj.Parameters.Add("@FileSize", System.Data.OleDb.OleDbType.VarChar, 100).Value = o.Length
Con.Open()
CmdObj.ExecuteNonQuery()
Con.Close()
Catch ex As Exception
Console.Write(ex.ToString)
End Try
End Sub
End Class
-----------------------------------------
شهریار