本文引用下面的 microsoft .net 框架類庫名稱空間: • system.data.sqlclient  
• system.io 
本任務的內容
• 概要 
  • 要求 
• 創建項目 
 
概要
在 ado.net 中,datareader 列、dataset 列或 command 參數不能使用 getchunk 和 appendchunk 方法。本文介紹如何使用 visual c# .net 讀寫二進制大對象 (blob) 字段。 
返回頁首 
要求
下面的列表列出了推薦使用的硬件、軟件、網絡結構以及所需的 service pack: • microsoft windows 2000 professional、windows 2000 server、windows 2000 advanced server 或 windows nt 4.0 server 
• microsoft visual studio .net 
• microsoft sql server 
返回頁首 
創建項目
1. 在您的 sql server 羅斯文數據庫中添加一個名為 myimages 的表。在該表中包含以下字段: • 標識字段,名為"id",類型為 int。 
• 字段,名為"description",類型為 varchar,長度為 50。 
• 字段,名為"imgfield",類型為 image。 
2. 啟動 visual studio .net,然后新建一個 visual c# windows 應用程序項目。 
3. 將兩個 button 控件從工具箱拖到默認窗體 form1 上。 
4. 在"屬性"窗口中,將 button1 的 text 屬性更改為保存到數據庫(從文件),將 button2 的 text 屬性更改為保存到文件(從數據庫)。 
5. 將下面的代碼添加到"代碼"窗口頂部: 
using system.data;
using system.data.sqlclient;
using system.io; 
6. 雙擊 button1,然后將以下代碼添加到 button1_click 事件處理程序中: 
{
sqlconnection con = new sqlconnection("server=darkover;uid=sa;pwd=password1;database=northwind");
sqldataadapter da = new sqldataadapter("select * from myimages", con);
sqlcommandbuilder mycb = new sqlcommandbuilder(da);
dataset ds = new dataset("myimages");
da.missingschemaaction = missingschemaaction.addwithkey;
filestream fs = new filestream(@"c:/winnt/gone fishing.bmp", filemode.openorcreate, fileaccess.read);
byte[] mydata= new byte[fs.length];
fs.read(mydata, 0, system.convert.toint32(fs.length));
fs.close();
da.fill(ds,"myimages");
datarow myrow;
myrow=ds.tables["myimages"].newrow();
myrow["description"] = "this would be description text";
myrow["imgfield"] = mydata;
ds.tables["myimages"].rows.add(myrow);
da.update(ds, "myimages");
con.close();
} 
7. 雙擊 button2,然后將以下代碼添加到 button2_click 事件處理程序中: 
{
sqlconnection con = new sqlconnection("server=darkover;uid=sa;pwd=password1;database=northwind");
sqldataadapter da = new sqldataadapter("select * from myimages", con);
sqlcommandbuilder mycb = new sqlcommandbuilder(da);
dataset ds = new dataset("myimages");
byte[] mydata= new byte[0];
da.fill(ds, "myimages");
datarow myrow;
myrow=ds.tables["myimages"].rows[0];
mydata =  (byte[])myrow["imgfield"];
int arraysize = new int();
arraysize = mydata.getupperbound(0);
filestream fs = new filestream(@"c:/winnt/gone fishing2.bmp", filemode.openorcreate, fileaccess.write);
fs.write(mydata, 0,arraysize);
fs.close();
} 
8. 按 f5 鍵編譯并運行該應用程序。 
9. 單擊"保存到數據庫(從文件)",將位于 c:/winnt/gone fishing.bmp 的圖像加載到 sql server image 字段。 
10. 單擊"保存到文件(從數據庫)",將 sql server image 字段的數據保存回文件中。 
新聞熱點
疑難解答
圖片精選