如何从Access数据库显示/检索图像到PictureBox?

时间:2014-09-20 02:08:44

标签: vb.net

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

有人可以根据此代码向我提供显示/检索的代码或从Access数据库获取图像到我的PictureBox1.Image吗?

1 个答案:

答案 0 :(得分:1)

我只是想通了,这是解决方案


公共类表单

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

结束班