C#讀取BLOB數(shù)據(jù)學(xué)習(xí)經(jīng)驗(yàn)
在向大家詳細(xì)介紹C#讀取BLOB數(shù)據(jù)之前,首先讓大家了解下什么是 BLOB?然后全面介紹C#讀取BLOB數(shù)據(jù)。
什么是 BLOB?
BLOB 是二進(jìn)制大對(duì)象(binary large object)的首字母縮寫(xiě),是在 SQL Server 中作為一個(gè)單一實(shí)體存儲(chǔ)的二進(jìn)制數(shù)據(jù)集合。BLOB 主要用于保存多媒體對(duì)象,比如圖像、視頻和聲音,但是它們還可以存儲(chǔ)程序,甚至是代碼片斷。雖然 SQL Server 支持 BLOB,但不是所有數(shù)據(jù)都支持。
C#讀取BLOB數(shù)據(jù)
有幾種方法可以用來(lái)從 SQL Server 數(shù)據(jù)庫(kù)讀取數(shù)據(jù)。首先,你可以逐行讀取數(shù)據(jù);或者,你可以選擇從特定列中讀取數(shù)據(jù)。最簡(jiǎn)單的方法是訪問(wèn)特定的列,下面我們先討論這種方法。
C#讀取BLOB數(shù)據(jù)要求工作在字節(jié)級(jí)。幸運(yùn)的是,SqlDataReader 對(duì)象有一個(gè) GetBytes 方法用于以字節(jié)方式訪問(wèn)一個(gè)列的數(shù)據(jù)。一旦字節(jié)被讀取,它們就可以與一個(gè) FileStream 對(duì)象組合,以將 BLOB 對(duì)象保存到一個(gè)文件中。下面的 C#代碼給出了這個(gè)例子:
- 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);
- }
【編輯推薦】