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吗?
答案 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
结束班