Click here to Skip to main content
Licence CPOL
First Posted 22 Dec 2009
Views 29,385
Bookmarked 41 times

Reading and Writing BLOB Data to Microsoft SQL or Oracle Database

By | 22 Dec 2009 | Article
In this article, I will examine how to store and retrieve binary files such as image or PDF into Microsoft SQL or Oracle database.
 
Part of The SQL Zone sponsored by
See Also

Introduction

In this article, I will examine how to store and retrieve binary files such as image or PDF into Microsoft SQL or Oracle database.

Using the Code

Reading a File into a Byte Array

byte[] byteArray = null;

using (FileStream fs = new FileStream
	(FileName, FileMode.Open, FileAccess.Read, FileShare.Read))
{

   byteArray = new byte[fs.Length];

   int iBytesRead = fs.Read(byteArray, 0, (int)fs.Length);
}  

Saving BLOB Data from a File to Oracle

For Oracle, you will have to download ODP.NET from Oracle. The following script will create a table that will hold the Blob data in Oracle.

CREATE TABLE BlobStore 
( 
    ID number, 
    BLOBFILE BLOB, 
    DESCRIPTION varchar2(100) 
);

Now, we would like to write Blob in Oracle using C#.

string sql = " INSERT INTO BlobStore(ID,BLOBFILE,DESCRIPTION) _
		VALUES(:ID, :BLOBFILE, :DESCRIPTION) "; 
string strconn = ConfigurationManager.ConnectionStrings_
		["ConnectionString"].ConnectionString; 

using (OracleConnection conn = new OracleConnection(strconn)) 
{ 
    conn.Open(); 

     using (OracleCommand cmd = new OracleCommand(sql, conn)) 
    { 
        cmd.Parameters.Add("ID", OracleDbType.Int32, 1, ParameterDirection.Input); 
        cmd.Parameters.Add("BLOBFILE", OracleDbType.Blob, 
			byteArray , ParameterDirection.Input); 
        cmd.Parameters.Add("DESCRIPTION", OracleDbType.Varchar2, 
			"any thing here", ParameterDirection.Input); 
        cmd.ExecuteNonQuery(); 
    } 
}

In the next step, we would like to load data from Oracle to file.

string sql = " select * from BlobStore "; 
string strconn = ConfigurationManager.ConnectionStrings_
		["ConnectionString"].ConnectionString; 
using (OracleConnection conn = new OracleConnection(strconn)) 
{ 
  conn.Open(); 
  using (OracleCommand cmd = new OracleCommand(sql, conn)) 
  { 
      using (IDataReader dataReader = cmd.ExecuteReader()) 
      { 
          while (dataReader.Read()) 
          { 
             byte[] byteArray= (Byte[])dataReader["BLOBFILE"]; 
             using (FileStream fs = new FileStream
			(strfn, FileMode.CreateNew, FileAccess.Write)) 
             { 
                fs.Write(byteArray, 0, byteArray.Length); 
             } 
          } 
      } 
   } 
}

Saving BLOB Data from a File to Microsoft SQL

Storing and retrieving Blob data in SQL Server is similar to Oracle. Here are code snippets that show saving and loading in SQL server. The following script will create a table that will hold the Blob data in SQL server.

CREATE TABLE TestTable 
( 
    ID int, 
    BlobData varbinary(max), 
    DESCRIPTION nvarchar(100) 
)

The following code shows how to Load from SQL Server to file.

using (SqlConnection connection = new SqlConnection("ConnectionString")) 
     { 
               connection.Open(); 
               using (SqlCommand command = 
		new SqlCommand("select BlobData from TestTable", connection)) 
               { 
                      byte[] buffer = (byte[])command.ExecuteScalar(); 
                       using (FileStream fs = new FileStream
					(@"C:\test.pdf", FileMode.Create)) 
                       { 
                           fs.Write(buffer, 0, buffer.Length); 
                       } 
                } 
     }

The following code shows how to save from byte array to SQL Server.

using (SqlConnection connection = new SqlConnection("ConnectionString")) 
{ 
    connection.Open(); 
    using(SqlCommand cmd = new SqlCommand("INSERT INTO TestTable_
	(ID, BlobData, DESCRIPTION) VALUES (@ID, @BlobData, @DESCRIPTION)", conn)) 
    { 

        cmd.Parameters.Add("@ID", SqlDbType.int).Value = 1; 
        cmd.Parameters.Add("@BlobData", SqlDbType.VarBinary).Value = ByteArray; 
        cmd.Parameters.Add("@DESCRIPTION", SqlDbType.NVarchar).Value = _
						"Any text Description"; 
        cmd.ExecuteNonQuery();         
    } 
}   

Summary

In this article, we examined how to store and retrieve binary files such as image or PDF into Oracle or Microsoft SQL database.

History

  • 22nd December, 2009: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Farooq Kaiser

Software Developer (Senior)
http://www.Fairnet.com
Canada Canada

Member

12+ years of complete software development life cycle experience for web based applications and multi-tier client-server desktop, primarily using LINQ, WCF, WWF, C#, ASP.NET, XML, XSLT, AJAX, Winforms,Visual Basic, JavaScript, JQuery, Google APIs, C++, VB.NET, C, ATL/COM, Open XML. Extensively involved in the requirement analysis, feasibility study, conceptualization, planning, architecture/design, configuration, development, quality assurance, implementation and release of the software products.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 5 Pinmembermanoj kumar choubey22:08 9 Feb '12  
GeneralUpdate requires a valid UpdateCommand when passed DataRow collection with modified rows.Update failed PinmemberNosa Osayamwen12:26 1 Feb '10  
GeneralOr you could use the providerName correctly PinmemberAlaric Dailey15:00 30 Jan '10  
GeneralProblems with Editing or Updating the Oracle Database PinmemberNosa Osayamwen10:23 20 Jan '10  
QuestionSaving emails from Exchange server to and from MS Sql. PinmemberJanBorup11:47 4 Jan '10  
GeneralVB Version PinmemberBob Carter7:50 30 Dec '09  
GeneralMy vote of 1 Pinmemberg0got29:14 22 Dec '09  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120517.1 | Last Updated 22 Dec 2009
Article Copyright 2009 by Farooq Kaiser
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid