PDA

View Full Version : ذخیره و بازیابی تصویر در دیتابیس اکسس vb.net 2012



goldpower
دوشنبه 03 فروردین 1394, 22:45 عصر
سلام
چه طور باید تصویر رو در اکسس ذخیره و بازیابی کرد؟

goldpower
سه شنبه 04 فروردین 1394, 10:25 صبح
سلام
چه طور باید تصویر رو در اکسس ذخیره و بازیابی کرد؟

راه حل :



Imports System.Data.OleDb
Imports System.IO

Public Class Form1

Dim ConnString As String = "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & Application.StartupPath & "\ImageDatabase.mdb"
Dim CONNECTION As New OleDbConnection(ConnString)
Dim DS As DataSet

'
'Load
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call ReloadImages()
End Sub
'
'Browse
Private Sub btnBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBrowse.Click
With OpenFileDialog1
.InitialDirectory = "C:\"
.Filter = "Bitmaps (*.bmp)|*.bmp|GIFs (*.gif)|*.gif|JPEGs (*.jpg)|*.jpg|All Image File (*.jpg,*.bmp,*.gif)|*.jpg;*.bmp;*.gif"
.FilterIndex = 2
End With

If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
With PictureBox1
.Image = Image.FromFile(Me.OpenFileDialog1.FileName)
.SizeMode = PictureBoxSizeMode.AutoSize
End With

End If
Me.Label1.Text = Me.OpenFileDialog1.FileName.ToString
End Sub
'
'Save
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click

If Me.Label1.Text.Trim = "" Then
MsgBox("Please browse a picture to save!", MsgBoxStyle.Information, "No Picture to Save")
Exit Sub
End If

Dim ms As New MemoryStream
Me.PictureBox1.Image.Save(ms, Me.PictureBox1.Image.RawFormat)

Dim arrayImage() As Byte = ms.GetBuffer
ms.Close() ' Closes the Memory Stream

Dim nStr As String = Me.Label1.Text.Substring(Me.Label1.Text.LastIndexO f("\") + 1)

Dim strQuery As String = "INSERT INTO Pic(Name, Picture) VALUES(@Name, @Picture)"

Dim objcommand As New OleDbCommand(strQuery, CONNECTION)
With objcommand
.Parameters.Add(New OleDbParameter("@Name", SqlDbType.NVarChar, 50)).Value = nStr
.Parameters.Add(New OleDbParameter("@Picture", SqlDbType.Image)).Value = arrayImage
End With

CONNECTION.Open()
objcommand.ExecuteNonQuery()
MessageBox.Show("Image Saved Into the DataBase", "Save Successfully", MessageBoxButtons.OK, MessageBoxIcon.Information)
CONNECTION.Close()

ReloadImages()

'Find and Select the Image Last Save.
Dim index As Integer = Me.ListBox1.FindStringExact(nStr)
Me.ListBox1.TopIndex = index
ListBox1.SelectedIndex = index

End Sub
'
'Delete
Private Sub btndelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btndelete.Click
Dim intID As Integer

If Me.ListBox1.SelectedIndex > -1 Then
intID = Me.DS.Tables(0).Rows(Me.ListBox1.SelectedIndex).It em("ID")
Else
'nothing to delete
Exit Sub
End If

Dim strQuery As String = "DELETE FROM Pic WHERE ID=@ID"

Dim objcommand As New OleDbCommand(strQuery, CONNECTION)
With objcommand
.Parameters.Add(New OleDbParameter("@ID", SqlDbType.Int)).Value = intID
End With

CONNECTION.Open()
objcommand.ExecuteNonQuery()
MessageBox.Show("Delete Image From the DataBase", "Delete Successfully", MessageBoxButtons.OK, MessageBoxIcon.Information)
CONNECTION.Close()

ReloadImages()
End Sub
'
'Export Picture
Private Sub ExportPictureToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportPictureToolStripMenuItem.Click
If Me.ListBox1.SelectedIndex > -1 Then

Dim strPic As String = DS.Tables(0).Rows(Me.ListBox1.SelectedIndex).Item("Name")
Dim strExt As String = strPic.Substring(strPic.LastIndexOf(".") + 1)
Dim strFileName As String = strPic.Remove(strPic.LastIndexOf("."))
Dim Index As String

Select Case strExt
Case "bmp"
Index = 1
Case "gif"
Index = 2
Case "jpg"
Index = 3
Case Else
Index = 0
End Select

With SaveFileDialog1
.Filter = "Bitmaps (*.bmp)|*.bmp|GIFs (*.gif)|*.gif|JPEGs (*.jpg)|*.jpg"
.FilterIndex = Index
End With
Me.SaveFileDialog1.FileName = strFileName
If Me.SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.PictureBox1.Image.Save(Me.SaveFileDialog1.FileN ame)
End If
End If

End Sub
'
'
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
If Me.Label1.Text.Trim <> "" Then
If IO.File.Exists(Me.Label1.Text) = True Then
Me.PictureBox1.Image = Image.FromFile(Me.Label1.Text)
Else
MsgBox("The picture file does not exist!", MsgBoxStyle.Exclamation, "File does not exist")
End If
End If

End Sub
'
'
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

If Me.ListBox1.SelectedIndex > -1 Then
Dim arrayImage() As Byte = CType(Me.DS.Tables(0).Rows(Me.ListBox1.SelectedInd ex).Item("Picture"), Byte())
Dim ms As New MemoryStream(arrayImage)
With Me.PictureBox1
.Image = Image.FromStream(ms)
.SizeMode = PictureBoxSizeMode.AutoSize

End With
End If

End Sub
'
'
Private Sub rdoNormal_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
End Sub

#Region "Helper"

Private Sub ReloadImages()
Try
Dim cmd As New OleDbCommand("SELECT * FROM Pic ORDER BY Name", CONNECTION)
Dim DA As New OleDbDataAdapter(cmd)
DS = New DataSet

DA.Fill(DS)

Me.ListBox1.DataSource = DS.Tables(0)
Me.ListBox1.DisplayMember = "Name"
Me.ListBox1.ValueMember = "ID"
Catch ex As Exception
MsgBox(ex.Message)
End Try

End Sub

#End Region

End Class

runsysco
شنبه 07 شهریور 1394, 17:32 عصر
با درود
عالی بود حرف نداشت من خیلی جاها رو گشتم اما این از همه بهتر کار میکنه

فرید نجفلو
یک شنبه 08 شهریور 1394, 21:09 عصر
سلام

سورس:ذخیره و بازیابی فایل در SQL Server و Access با درصد پیشرفت(دانلود کنید!) (http://barnamenevis.org/showthread.php?333391-%D8%B3%D9%88%D8%B1%D8%B3-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%88-%D8%A8%D8%A7%D8%B2%DB%8C%D8%A7%D8%A8%DB%8C-%D9%81%D8%A7%DB%8C%D9%84-%D8%AF%D8%B1-SQL-Server-%D9%88-Access-%D8%A8%D8%A7-%D8%AF%D8%B1%D8%B5%D8%AF-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA(%D8%AF%D8%A7% D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF!))