Handling messages (ADO.NET)

You can capture info and warning messages that Vertica provides to the ADO.NET driver by using the InfoMessage event on the VerticaConnection delegate class.

You can capture info and warning messages that Vertica provides to the ADO.NET driver by using the InfoMessage event on the VerticaConnection delegate class. This class captures messages that are not severe enough to force an exception to be triggered, but might still provide information that can benefit your application.

To use the VerticaInfoMessageEventHander class:

  1. Create a method to handle the message sent from the even handler:

        static void conn_InfoMessage(object sender, VerticaInfoMessageEventArgs e)
        {
            Console.WriteLine(e.SqlState + ": " + e.Message);
        }
    
  2. Create a connection and register a new VerticaInfoMessageHandler delegate for the InfoMessage event:

         _conn.InfoMessage += new VerticaInfoMessageEventHandler(conn_InfoMessage);
    
  3. Execute your queries. If a message is generated, then the event handle function is run.

  4. You can unsubscribe from the event with the following command:

    _conn.InfoMessage -= new VerticaInfoMessageEventHandler(conn_InfoMessage);
    

Example usage:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Vertica.Data.VerticaClient;
namespace ConsoleApplication
{
    class Program
    {

// define message handler to deal with messages

        static void conn_InfoMessage(object sender, VerticaInfoMessageEventArgs e)
        {
            Console.WriteLine(e.SqlState + ": " + e.Message);
        }
        static void Main(string[] args)
        {

//configure connection properties

            VerticaConnectionStringBuilder builder = new VerticaConnectionStringBuilder();
            builder.Host = "192.168.1.10";
            builder.Database = "VMart";
            builder.User = "dbadmin";

//open the connection

            VerticaConnection _conn = new VerticaConnection(builder.ToString());
            _conn.Open();

//create message handler instance by subscribing it to the InfoMessage event of the connection

            _conn.InfoMessage += new VerticaInfoMessageEventHandler(conn_InfoMessage);

//create and execute the command

            VerticaCommand cmd = _conn.CreateCommand();
            cmd.CommandText = "drop table if exists fakeTable";
            cmd.ExecuteNonQuery();

//close the connection

            _conn.Close();
        }
    }
}

This examples displays the following when run:

00000: Nothing was dropped