明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Vb.net向sql server數(shù)據(jù)庫(kù)中保存圖片(二)

[摘要]4、 聲明類級(jí)的變量。找到設(shè)計(jì)期產(chǎn)生的代碼部分,把下面的語(yǔ)句加到變量聲明后面。什么?不知道變量聲明在哪兒?不會(huì)吧!Private fs As FileStream Private ds A...
4、 聲明類級(jí)的變量。找到設(shè)計(jì)期產(chǎn)生的代碼部分,把下面的語(yǔ)句加到變量聲明后面。什么?不知道變量聲明在哪兒?不會(huì)吧!

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、 開(kāi)始寫(xiě)代碼了。首先是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按鈕的點(diǎn)擊事件代碼:

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按鈕的點(diǎn)擊事件代碼

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() '執(zhí)行插入語(yǔ)句

conn.Close()

fs.Close()

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

8、 選擇view狀態(tài)的事件代碼

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、 “>>”按鈕點(diǎn)擊事件代碼



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、 “<<”按鈕點(diǎn)擊事件代碼

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、 好了,可以運(yùn)行看看了。