Microsoft Knowledge Base Article
This article contents is Microsoft Copyrighted material.
©2005-©2007 Microsoft Corporation. All rights reserved.
Terms
of Use |
Trademarks
Article ID: 309158 - Last Review: July 14, 2004 - Revision: 4.2
How To Read and Write BLOB Data by Using ADO.NET with Visual C# .NET
This article was previously published under Q309158
On This Page
SUMMARY
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
- 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.
- Start Visual Studio .NET, and then create a new Visual C#
Windows Application project.
- Drag two Button controls from the toolbox to the default form, Form1.
- 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).
- Add the following code to the top of the Code window:
using System.Data;
using System.Data.SqlClient;
using System.IO;
- 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();
}
- 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();
}
- Press F5 to compile and to run the application.
- Click Save to Database (from File) to load
the image, C:\WinNT\Gone Fishing.bmp, into the SQL Server Image field.
- Click Save to File (from Database) to save
the data from the SQL Server Image field back to a file.
APPLIES TO
- Microsoft ADO.NET 1.1
- Microsoft ADO.NET 1.0
- Microsoft Visual C# .NET 2003 Standard Edition
- Microsoft Visual C# .NET 2002 Standard Edition
| kbhowtomaster kbio kbsqlclient kbsystemdata KB309158 |
Community Feedback System
Very often, it takes hours to solve a problem. Very often, you've looked high
and low, and have tried a lot of solutions. When you finally found it, chances
are, it was because someone else helped you. Here's your chance to give back.
Use our community feedback tool to let others know what worked for you and what
didn't.
Please also understand that the community feedback system is not warranted to be
correct, it's simply a system that we've built to let people try and help each
other. If something in a feedback response doesn't make sense to you, or you're
not comfortable making changes that the feedback talks about (like registry
edits), please consult a professional.
Thank you for using kbAlertz.com Feedback System.
-- Scott Cate
Be the first to leave feedback, to help others about this knowledge base
article.
(Optional) Name
(Optional)
Public URL Or Email
Comments
No
HTML -- Text Only Please