Thursday, 20 June 2013

"using" keyword in C#"


Two ways to use "using" keyword in C#"


In C#,  using Keyword  can be used in two different ways and are hence referred to differently.


 As a Directive In  this usage, the "using" keyword can be used to include a namespace  in your programme.(Mostly used)
As a StatementUsing can also be used in a block of code to dispose a IDisposable objects.(less used)
Example
A simple and straightforward  approach to connect to a database server and read data would be-
SqlConnection sqlconnection = new SqlConnection(connectionString);
  SqlDataReader reader = null;
  SqlCommand cmd = new SqlCommand(commandString.  
sqlconnection);
  
sqlconnection 
.Open();
  reader = cmd.ExecuteReader();
       while (reader.Read())
         {
           //Do
         }
  reader.Close();
  
sqlconnection 
.Close(); 
However, the above given code may generate error.
If any exception occurs inside while block it throws exception the connection.close() process will not executed due to the exception.To avoid this situation, we can take the help of the try....catch... finally block   by closing the connection inside the finally block or inside the catch block.
"Using" keyword takes the parameter of type IDisposable.Whenever you are using any IDisposable type object you should use the "using" keyword  to handle automatically when it should close or dispose. Internally using keyword calls the Dispose() method to dispose the IDisposable object.
So the correct code would be :
using(SqlConnection sqlconnection= new SqlConnection(connectionString) )
            {
              SqlCommand cmd = new SqlCommand(commandString, sqlconnection);
          sqlconnection.Open();
             using (SqlDataReader reader = cmd.ExecuteReader())
             {
                while (reader.Read())
                {
                  //DO
                }
             }
           }
 In this code  if any exception occurs then dispose() will be called and connection will closed automatically.


0 comments:

Post a Comment

Topics

ADO .Net (2) Ajax (1) Angular Js (17) Angular2 (24) ASP .Net (14) Azure (1) Breeze.js (1) C# (49) CloudComputing (1) CMS (1) CSS (2) Design_Pattern (3) DI (3) Dotnet (21) Entity Framework (3) ExpressJS (4) Html (3) IIS (1) Javascript (6) Jquery (9) Lamda (3) Linq (11) Mongodb (1) MVC (48) NodeJS (7) RDLC (1) Report (1) Sql Server (29) SSIS (3) SSRS (2) UI (1) WCF (12) Web Api (9) Web Service (1) XMl (1)