server|数据|数据库4、 声明类级的变量。找到设计期产生的代码部分,把下面的语句加到变量声明后面。什么?不知道变量声明在哪儿?不会吧!
Private fs As FileStream
Private ds As DataSet
Private conn As New SqlConnection("server=localhost;database=northwind;integrated security=true;")
Private currentpos As Integer = 9
5、 开始写代码了。首先是form_load
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
btnOpen.Enabled = True
btnSave.Enabled = True
btnBack.Enabled = False
btnForward.Enabled = False
End Sub
6、 open按钮的点击事件代码:
Private Sub openbtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
Dim Opendlg As New OpenFileDialog
Opendlg.Title = "Select a picture file"
Opendlg.Filter = "(*.bmp)|*bmp|(*.jpg)|*.jpg"
Opendlg.ShowDialog()
lblPath.Text = Opendlg.FileName.ToString()
fs = New FileStream(Opendlg.FileName.ToString(), FileMode.Open, FileAccess.Read)
PictureBox1.Image = Image.FromFile(Opendlg.FileName.ToString())
End Sub
7、 save按钮的点击事件代码
Private Sub savebtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim sqlcomm As New SqlCommand
sqlcomm.CommandText = "INSERT INTO employees (lastname,firstname,photo) VALUES (lastname,firstname,photo)"
sqlcomm.Connection = conn
Dim Data(fs.Length) As Byte
fs.Read(Data, 0, Int(fs.Length))
Dim prm1 As New SqlParameter("lastname", txtLN.Text)
Dim prm2 As New SqlParameter("firstname", txtFN.Text)
Dim prm3 As New SqlParameter("photo", SqlDbType.VarBinary, Int(fs.Length), ParameterDirection.Input, False, 0, 0, "", DataRowVersion.Current, Data)
sqlcomm.Parameters.Add(prm1)
sqlcomm.Parameters.Add(prm2)
sqlcomm.Parameters.Add(prm3)
Try
conn.Open()
sqlcomm.ExecuteNonQuery() '执行插入语句
conn.Close()
fs.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
8、 选择view状态的事件代码
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked = True Then
btnOpen.Enabled = False
btnSave.Enabled = False
btnBack.Enabled = True
btnForward.Enabled = True
currentpos = 9
Dim sqlcomm As New SqlCommand
sqlcomm.CommandText = "SELECT employeeId, photo FROM employees ORDER BY employeeId"
sqlcomm.Connection = conn
Dim da As New SqlDataAdapter(sqlcomm)
Try
conn.Open()
ds = New DataSet
da.Fill(ds, "employees")
conn.Close()
Catch sqlEx As SqlException
MsgBox(sqlEx.Message)
End Try
Dim data() As Byte = ds.Tables("employees").Rows(9)("photo")
Dim stmphoto As New MemoryStream(data)
PictureBox1.Image = Image.FromStream(stmphoto)
Else
btnOpen.Enabled = True
btnSave.Enabled = True
btnBack.Enabled = False
btnForward.Enabled = False
End If
End Sub
9、 “>>”按钮点击事件代码
Private Sub forward_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnForward.Click
If currentpos = ds.Tables("employees").Rows.Count - 1 Then
Return
Else
currentpos += 1
Dim data() As Byte
data = ds.Tables("employees").Rows(currentpos)("photo")
Dim stmphoto As New MemoryStream(data)
PictureBox1.Image = Image.FromStream(stmphoto)
End If
End Sub
10、 “<<”按钮点击事件代码
Private Sub back_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click
If currentpos = 9 Then
Return
Else
currentpos -= 1
End If
Dim Data() As Byte
Data = ds.Tables("employees").Rows(currentpos)("photo")
Dim stmPhoto As New MemoryStream(Data)
PictureBox1.Image = Image.FromStream(stmPhoto)
End Sub
11、 好了,可以运行看看了。
Vb.net向sql server数据库中保存图片(二)
80酷酷网 80kuku.com