The
GetChunk and the
AppendChunk methods are not available in ADO.NET on
DataReader columns,
DataSet columns, or
Command parameters. This article describes how to use Visual C# .NET to read and write binary large object (BLOB) fields.
Requirements
The following list outlines the recommended hardware, software, network infrastructure, and service packs that are required:
• | Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, or Windows NT 4.0 Server |
• | Microsoft Visual Studio .NET |
• | Microsoft SQL Server |
Create the Project
1. | Add a table named MyImages to your SQL Server Northwind database. Include the following fields in your table:
• | Identity field that is named "ID" of type Int. | • | Field that is named "Description" of type VarChar with a length of 50. | • | Field that is named "ImgField" of type Image. |
|
2. | Start Visual Studio .NET, and then create a new Visual C# Windows Application project. |
3. | Drag two Button controls from the toolbox to the default form, Form1. |
4. | In the Properties window, change the Text property of Button1 to Save to Database (from File), and then change the Text property of Button2 to Save to File (from Database). |
5. | Add the following code to the top of the Code window:using System.Data;
using System.Data.SqlClient;
using System.IO;
|
6. | Double-click Button1, and then add the following code to the Button1_Click event handler.
Note Uid <user name> must have permissions to perform these operations on the database.{
SqlConnection con = new SqlConnection("Server=Darkover;uid=<username>;pwd=<strong password>;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. | Double-click Button2, and then add the following code to the Button2_Click event handler.
Note Uid <user name> must have permissions to perform these operations on the database.{
SqlConnection con = new SqlConnection("Server=Darkover;uid=<username>;pwd=<strong password>;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. | Press F5 to compile and to run the application. |
9. | Click Save to Database (from File) to load the image, C:/WinNT/Gone Fishing.bmp, into the SQL Server Image field. |
10. | Click Save to File (from Database) to save the data from the SQL Server Image field back to a file. |