Vb.net向sql server資料庫中儲存圖片(一)

來源:互聯網
上載者:User
server|資料|資料庫 預備知識: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)



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.