C#讀取BLOB數(shù)據(jù)學(xué)習(xí)經(jīng)驗
在向大家詳細介紹C#讀取BLOB數(shù)據(jù)之前,首先讓大家了解下什么是 BLOB?然后全面介紹C#讀取BLOB數(shù)據(jù)。
什么是 BLOB?
BLOB 是二進制大對象(binary large object)的首字母縮寫,是在 SQL Server 中作為一個單一實體存儲的二進制數(shù)據(jù)集合。BLOB 主要用于保存多媒體對象,比如圖像、視頻和聲音,但是它們還可以存儲程序,甚至是代碼片斷。雖然 SQL Server 支持 BLOB,但不是所有數(shù)據(jù)都支持。
C#讀取BLOB數(shù)據(jù)
有幾種方法可以用來從 SQL Server 數(shù)據(jù)庫讀取數(shù)據(jù)。首先,你可以逐行讀取數(shù)據(jù);或者,你可以選擇從特定列中讀取數(shù)據(jù)。最簡單的方法是訪問特定的列,下面我們先討論這種方法。
C#讀取BLOB數(shù)據(jù)要求工作在字節(jié)級。幸運的是,SqlDataReader 對象有一個 GetBytes 方法用于以字節(jié)方式訪問一個列的數(shù)據(jù)。一旦字節(jié)被讀取,它們就可以與一個 FileStream 對象組合,以將 BLOB 對象保存到一個文件中。下面的 C#代碼給出了這個例子:
- Byte[] blob = null;
- FileStream fs = null;
- const string sConn = "server=(local);Initial
- Catalog=Northwind;UID=ctester;PWD=password";
- try {
- SqlConnection conn = new SqlConnection(sConn);
- SqlCommand cmd = new SqlCommand("SELECT Picture FROM Categories WHERE
- CategoryName='Builder'", conn);
- cn.Open();
- SqlDataReader sdr = cmd.ExecuteReader();
- sdr.Read();
- blob = new Byte[(sdr.GetBytes(0, 0, null, 0, int.MaxValue))];
- sdr.GetBytes[0, 0, blob, 0, blob.Length);
- sdr.Close();
- conn.Close();
- fs = new FileStream("c:\\Builder.doc", FileMode.Create, FileAccess.Write);
- fs.Write(blob, 0, blob.Length);
- fs.Close();
- } catch (SqlException e){
- Console.WriteLine("SQL Exception: " + e.Message);
- } catch (Exception e) {
- Console.WriteLine("Exception: "+ e.Message);
- }
【編輯推薦】