Vb.net向sql server數據庫中保存圖片(一)
2024-07-10 13:01:33
供稿:網友
預備知識:stream、ado.net
微軟的sql server數據庫的image、text等字段都屬于二進制的大對象。這些對象的存取和其他輕型對象略有不同。比如,我們打開一個數據表的時候,普通類型的字段都可以看見,而image類型的字段卻不行,只能通過編程的方法來讀取。這篇資料就是介紹怎樣用vb.net來向sql server數據庫中存放圖片,怎樣從數據庫中取出圖片瀏覽。我在這里也費了老大的精力,主要是為了答復一個同學的提問。(他刨根問底式的學習方式,把我急出一身冷汗,慚愧。。。。。。)
這個例程用到了 sql server自帶的northwind數據庫,其中employees(職員)數據表有一個字段“photo”,是用來存放照片的,里面有9條記錄,我費了半天力氣,想去看看那9個人圖片,就是看不見。現在猜測,這些人的photo根本就是空的。所以,我決定添加一些新的記錄。
在這個例程里,我實現了一個簡單的winform程序,這個程序通過點擊“open”按鈕選擇一個圖片文件(bmp或jpg),并顯示在圖形控件picturebox中。通過“save”按鈕存入數據庫。點擊“view”checkbox可以切換到瀏覽狀態,觀看存入數據庫的圖片。
微軟.net framework的system.io命名空間下給我們提供了一個filestream文件流類。我們可以使用這個文件流對二進制大對象輕松進行讀寫。由于對二進制大對象使用的流操作,所以對于任何文件都具有通用性。讀寫文本文件也可以這么做。
步驟:
1、 先來看一下northwind數據庫中employees表結構
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應用程序窗體,界面如下:(圖1)