2014-09-20 2 views
-1
Private Sub UpdatePicture() 

    Dim str As String 
    str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=UsersDB.accdb" 
    cn = New OleDbConnection(str) 
    cn.Open() 

    Dim ms As New MemoryStream() 
    Dim arrimage() As Byte 
    If (PictureBox1.Image IsNot Nothing) Then 
     PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat) 
     arrimage = ms.GetBuffer 
     ms.Close() 
    End If 

    With cmd 
     .Connection = cn 
     .CommandText = "UPDATE Users set Picture = @img where StudentNumber " & TextBox1.Text & "" 
     .Parameters.Add("@img", OleDbType.Binary).Value = IIf(PictureBox1.Image IsNot Nothing, arrimage, DBNull.Value) 
     'con.Open() 
     i = .ExecuteNonQuery() 
     .Dispose() 
     cn.Close() 
     If (i > 0) Then 
      MsgBox("Save Successs!") 
     End If 
    End With 
    con.Close() 

End Sub 

Может ли кто-нибудь дать мне код для показа/получения или получения изображения в моем PictureBox1.Image из базы данных Access на основе этого кода?Как показать/получить или получить изображение в PictureBox из базы данных Access?

+0

Просьба указать код, показывающий, как вы попытались решить вашу проблему. StackOverflow не дает вам сайт кода. Пожалуйста, продемонстрируйте усилия и следуйте этим рекомендациям, задавая вопросы: http://stackoverflow.com/help/how-to-ask и http://stackoverflow.com/help/mcve – jordanhill123

+0

Вы можете записать изображение в поток, используя, например, '' PictureBox1.Image.Save() ', из которого вы можете получить байты для хранения. Чтобы получить, прочитайте двоичные данные в изображении с помощью методов 'PictureBox1.Image = Image.FromXXX()'. – Basic

+0

Возможный дубликат [Получить изображение из базы данных доступа] (http://stackoverflow.com/questions/20890646/retrieve-picture-from-access-database) – Plutonix

ответ

0

Я просто figgured его, это решение Форму


Открытый класс

Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\UsersDB.accdb") 
Dim cmd As New OleDbCommand("", con) 
Dim Reader As OleDb.OleDbDataReader 
Dim cn As New OleDbConnection 
Dim i As Integer 

Public Sub GetData()

con.Open() 
    Dim dt As New DataTable("Users") 
    Dim rs As New OleDb.OleDbDataAdapter("Select * from Users where StudentNumber='" & TextBox1.Text & "' ", con) 
    rs.Fill(dt) 
    DataGridView1.DataSource = dt 
    DataGridView1.Refresh() 
    Label1.Text = dt.Rows.Count 
    rs.Dispose() 
    con.Close() 

    If Val(Label1.Text) = 1 Then 
     Dim i As Integer 
     i = DataGridView1.CurrentRow.Index 
     'Image 
     Dim bytes As [Byte]() = (DataGridView1.Item(6, i).Value) 
     Dim ms As New MemoryStream(bytes) 
     PictureBox1.Image = Image.FromStream(ms) 

    End If 

End Sub

End Класс