现在的位置: 首页 > 综合 > 正文

[翻译]Visual C# .NET中使用ADO.NET读写 BLOB 数据

2011年04月28日 ⁄ 综合 ⁄ 共 2522字 ⁄ 字号 评论关闭

本文引用下列 Microsoft .NET Framework Class Library 命名空间:

System.Data.SqlClient
System.IO

摘要

GetChunk 和 AppendChunk 方法在 ADO.NET 的 DataReader 列、 DataSet 列、 或 Command 参数中已不可用. 本文描述如何使用 Visual C# .NET 读写 binary large object (BLOB) 字段.

 

要求

以下是推荐的硬件、软件、网络结构和服务包要求列表:

Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, 或 Windows NT 4.0 Server
Microsoft Visual Studio .NET
Microsoft SQL Server
创建项目

1.      添加一个名为 MyImages的表到 SQL Server Northwind 数据库。 表字段设置如下:

        唯一标识字段名称为"ID",类型为Int。

        名称为"Description"的VarChar类型的字段,字段长度为50。

        名称为"ImgField" 的Image 类型的字段。

2.      启动 Visual Studio .NET, 并创建一个新的 Visual C# Windows 应用程序项目。

3.      从工具栏中托两个Button 控件到默认窗体, Form1。

4.      在属性窗口中修改Button1的 Text 属性为从文件保存到数据库, 然后修改Button2 的 Text 属性为从数据库保存到文件。

5.      在代码窗口的顶部添加下列代码:

6.             using System.Data;

7.             using System.Data.SqlClient;

   using System.IO;

8.      双击 Button1, 并添加下列代码到 Button1_Click 的事件处理器中:

9.             

{

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();                    

}

10.  双击 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();

}

11.  按 F5 以编译并运行程序。

12.  点击 从文件保存到数据库 加载图象 C:\WinNT\Gone Fishing.bmp 到 SQL Server Image 字段。

13.  点击 从数据库保存到文件 以从 SQL Server Image 字段保存数据到文件。

抱歉!评论已关闭.