public void TestInfoMessage()
        {
            string sql = "RAISERROR('coucou', 0, 0)";

            using (ConnectionParam cnn = new ConnectionParam(myconnectionString, timeOut: 200))
            {
                cnn.OnConnectionInfoMessage += Cnn_OnConnectionInfoMessage;
                using (DataTable tbl = cnn.ExecuteDataTable(sql))
                {
                }

                cnn.OnConnectionInfoMessage -= Cnn_OnConnectionInfoMessage;
            }

            using (ConnectionParam cnn = new ConnectionParam(myconnectionString, stayConnectionOpen: true, timeOut: 200))
            {
                using (DataTable tbl = cnn.ExecuteDataTable(sql))
                {
                }

                cnn.OnConnectionInfoMessage += Cnn_OnConnectionInfoMessage;
                using (DataTable tbl = cnn.ExecuteDataTable(sql))
                {
                }

                cnn.OnConnectionInfoMessage -= Cnn_OnConnectionInfoMessage;
            }

            using (ConnectionParam cnn = new ConnectionParam(myconnectionString, stayConnectionOpen: true, timeOut: 200))
            {
                using (DataTable tbl = cnn.ExecuteDataTable(sql))
                {
                }

                cnn.OnConnectionInfoMessage += Cnn_OnConnectionInfoMessage;
                using (DataTable tbl = cnn.ExecuteDataTable(sql))
                {
                }

                cnn.OnConnectionInfoMessage -= Cnn_OnConnectionInfoMessage;
            }
        }
        public void TestExecuteDataXXX()
        {
            string sql = @"
SELECT 0 AS [Index], 'Doc' AS [Name] UNION SELECT 1, null UNION SELECT 2,  null UNION SELECT 1, 'titi' UNION SELECT -4, 'rien'
;
SELECT object_id, name FROM sys.tables
;";

            using (ConnectionParam cnn = new ConnectionParam(myconnectionString, timeOut: 200))
            {
                using (DataSet dst = cnn.ExecuteDataSet(sql, CommandType.Text))
                {
                    Assert.IsNotNull(dst, "DataSet initialisé");
                    AssertAreEqual(dst.Tables.Count, 2, "Nombre de tables");
                    AssertAreEqual(dst.Tables[0].Rows.Count, 5, "Nombre de lignes dans la première table");
                    Assert.IsTrue(dst.Tables[1].Rows.Count > 0, "Il n'y a pas de ligne dans la dernière table");
                }

                using (DataTable tbl = cnn.ExecuteDataTable(sql))
                {
                    Assert.IsNotNull(tbl, "DataSet initialisé");
                    AssertAreEqual(tbl.Rows.Count, 5, "Nombre de lignes dans la première table");
                }

                using (DataSet dst = cnn.ExecuteDataSetWithTableName(sql))
                {
                    Assert.IsNotNull(dst, "DataSet initialisé");
                    AssertAreEqual(dst.Tables[0].TableName, "Doc", "Nom de la première table");
                    AssertAreEqual(dst.Tables[1].TableName, "titi", "Nom de la seconde table");
                }
            }

            // les cas débiles pour la couverture des tests
            sql = @"
SELECT 0 AS [Index], 'Doc' AS [NotName] UNION SELECT 1, null UNION SELECT 2,  null UNION SELECT 1, 'titi' UNION SELECT -4, 'rien'
;
SELECT object_id, name FROM sys.tables
;";
            using (ConnectionParam cnn = new ConnectionParam(myconnectionString, timeOut: 200))
            {
                using (DataSet dst = cnn.ExecuteDataSetWithTableName(sql))
                {
                    Assert.IsNotNull(dst, "DataSet initialisé");
                    AssertAreEqual(dst.Tables[0].TableName, "Table", "Nom de la première table");
                    AssertAreEqual(dst.Tables[1].TableName, "Table1", "Nom de la seconde table");
                }
            }

            sql = @"
      SELECT 0 AS [NotIndex], 'Doc' AS [Name] UNION SELECT 1, null UNION SELECT 2,  null UNION SELECT 1, 'titi' UNION SELECT -4, 'rien'
      ;
      SELECT object_id, name FROM sys.tables
      ;";
            using (ConnectionParam cnn = new ConnectionParam(myconnectionString, timeOut: 200))
            {
                using (DataSet dst = cnn.ExecuteDataSetWithTableName(sql))
                {
                    Assert.IsNotNull(dst, "DataSet initialisé");
                    AssertAreEqual(dst.Tables[0].TableName, "Table", "Nom de la première table");
                    AssertAreEqual(dst.Tables[1].TableName, "Table1", "Nom de la seconde table");
                }
            }

            // les cas débiles pour la couverture des tests
            using (ConnectionParam cnn = new ConnectionParam(myconnectionString))
            {
                using (DataTable tbl = cnn.ExecuteDataTable("PRINT 'coucou'"))
                {
                    Assert.IsNull(tbl, "Table non nulle");
                }

                using (DataSet dst = cnn.ExecuteDataSetWithTableName("print 'zoby'"))
                {
                    Assert.IsNotNull(dst, "Dataset null");
                    AssertAreEqual(dst.Tables.Count, 0, "Dataset pas null mais sans tables");
                }

                using (DataSet dst = cnn.ExecuteDataSetWithTableName("SELECT 1 as number"))
                {
                    Assert.IsNotNull(dst, "DataSet initialisé");
                    AssertAreEqual(dst.Tables[0].TableName, "Table", "Nom de la première table1");
                }

                using (DataSet dst = cnn.ExecuteDataSetWithTableName("SELECT 1 as number; SELECT 2 as number"))
                {
                    Assert.IsNotNull(dst, "DataSet initialisé");
                    AssertAreEqual(dst.Tables[0].TableName, "Table", "Nom de la première table2");
                    AssertAreEqual(dst.Tables[1].TableName, "Table1", "Nom de la seconde table2");
                }
            }
        }