SqlConnection: info message event handler

   


using System;
using System.Data;
using System.Data.SqlClient;

   class SqlDemo {
      static void Main(){
         string connString = "server=(local)SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI";

         SqlConnection cn = new SqlConnection(connString);

         cn.InfoMessage += new SqlInfoMessageEventHandler(CnInfoMessage);
         cn.StateChange += new StateChangeEventHandler(CnStateChange); 

         SqlCommand cmd = new SqlCommand();
         cmd.CommandText = "SELECT TOP 2 Id FROM Employee";
         cmd.Connection = cn;

         try
         {
            cn.Open();

            SqlDataReader dr = cmd.ExecuteReader();      

            while(dr.Read())
            {
               Console.WriteLine(dr.GetInt32(0));    
            }
            dr.Close();

            cmd.CommandText = "PRINT 'Get Id for all Employees'";
            cmd.ExecuteNonQuery();
         }
         catch(SqlException ex)
         {
            Console.WriteLine(ex.Message);
         }      
         finally
         {
            cn.Close();
         }      
      }


      static void CnInfoMessage(object sender, SqlInfoMessageEventArgs ev)
      {
         foreach (SqlError err in ev.Errors)
         {
            Console.WriteLine("Entering InfoMessage Event Handler");
            Console.WriteLine("Source- " + err.Source);
            Console.WriteLine("State- " + err.State);
            Console.WriteLine("Number- " + err.Number);
            Console.WriteLine("Procedure- " + err.Procedure);
            Console.WriteLine("Server- " + err.Server);
            Console.WriteLine("Message- " + err.Message);
            Console.WriteLine("Exiting InfoMessage Event Handler");
         }
      }

      static void CnStateChange(object sender, StateChangeEventArgs ev)
      {
         Console.WriteLine("Entering StateChange EventHandler");
         Console.WriteLine("Sender = "+ sender.ToString());
         Console.WriteLine("Original State = "+ ev.OriginalState.ToString());
         Console.WriteLine("Current State = "+ ev.CurrentState.ToString()); 
         Console.WriteLine("Exiting StateChange EventHandler");
      }

   }