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

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

[摘要]預(yù)備知識:STREAM、ADO.NET 微軟的SQL SERVER數(shù)據(jù)庫的Image、text等字段都屬于二進(jìn)制的大對象。這些對象的存取和其他輕型對象略有不同。比如,我們打開一個數(shù)據(jù)表的時候,普通類...
預(yù)備知識:STREAM、ADO.NET



微軟的SQL SERVER數(shù)據(jù)庫的Image、text等字段都屬于二進(jìn)制的大對象。這些對象的存取和其他輕型對象略有不同。比如,我們打開一個數(shù)據(jù)表的時候,普通類型的字段都可以看見,而Image類型的字段卻不行,只能通過編程的方法來讀取。這篇資料就是介紹怎樣用vb.NET來向sql server數(shù)據(jù)庫中存放圖片,怎樣從數(shù)據(jù)庫中取出圖片瀏覽。我在這里也費(fèi)了老大的精力,主要是為了答復(fù)一個同學(xué)的提問。(他刨根問底式的學(xué)習(xí)方式,把我急出一身冷汗,慚愧。。。。。。)



這個例程用到了 sql server自帶的northwind數(shù)據(jù)庫,其中employees(職員)數(shù)據(jù)表有一個字段“photo”,是用來存放照片的,里面有9條記錄,我費(fèi)了半天力氣,想去看看那9個人圖片,就是看不見,F(xiàn)在猜測,這些人的photo根本就是空的。所以,我決定添加一些新的記錄。



在這個例程里,我實(shí)現(xiàn)了一個簡單的WinForm程序,這個程序通過點(diǎn)擊“Open”按鈕選擇一個圖片文件(bmp或jpg),并顯示在圖形控件PictureBox中。通過“Save”按鈕存入數(shù)據(jù)庫。點(diǎn)擊“View”CheckBox可以切換到瀏覽狀態(tài),觀看存入數(shù)據(jù)庫的圖片。


  微軟.NET Framework的System.IO命名空間下給我們提供了一個FileStream文件流類。我們可以使用這個文件流對二進(jìn)制大對象輕松進(jìn)行讀寫。由于對二進(jìn)制大對象使用的流操作,所以對于任何文件都具有通用性。讀寫文本文件也可以這么做。

步驟:

1、 先來看一下northwind數(shù)據(jù)庫中employees表結(jié)構(gòu)


2、 知道.net連接sql server的方法嘛,不知道的話,看看我寫的“ado.net中的connection對象”吧。讀懂下面這幾句沒問題吧:

Dim conn as new sqlconnection(“server=localhost;database=northwind;Integrated Security=true;”

Dim sqlcomm As New SqlCommand

sqlcomm.Connection = conn

sqlcomm.CommandText = "INSERT INTO employees (lastname,firstname,photo) VALUES (@lastname,@firstname,@photo)"

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)




3、新建一個windows應(yīng)用程序窗體,界面如下:(圖1)