Montando string de conexão para banco de dados em C# através de um arquivo xml personalizado

Publicado por Claudio Rocha de Jesus (última atualização em 31/10/2009)

[ Hits: 11.295 ]

Homepage: www.zambotecnologia.com.br

Download OpenConfig.cs




Este arquivo abre um arquivo xml com a(s) configuração(ões) do(s) banco de dados especificado e monta as strings de conexão necessárias  para cada banco. A intenção é que ao adicionar uma nova cláusula no arquivo xml já seja automaticamente incluída na string de conexão.

Somente é necessário criar uma nova classe caso deseje que se conecte em um banco diferente dos aqui já especificados.

  



Esconder código-fonte

/**
 * Este arquivo abre um arquivo xml com a(s) configuração(ões) do(s)
 * banco de dados especificado e monta as strings de conexão necessária
 * para cada banco.
 * A intenção é que ao adicionar uma nova clausula no arquivo xml já seja automaticamente
 * incluída na string de conexão.
 * Somente é necessário criar uma nova classe caso deseje que se conecte em um banco 
 * diferente dos aqui já especificados.
 * 
 * @category Biblioteca
 * @package  DataAccesLayer
 * @author   Claudio Rocha de Jesus <[email protected]>
 * @since    0.1
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;

namespace DataAccessLayer
{
   /// <summary>
   /// Irá abrir o arquivo de configuração xml e montar uma string de conexão com banco de dados.
   /// </summary>
   public class OpenConfig
   {
      /*
         * Declaração de variaveis
         */
      private string localPath, fileName;

      public OpenConfig()
      {
         this.localPath = "\\Users\\rocha\\workspace\\travelace.ti\\config\\";
         this.fileName = "dbConfig.xml";
      }

      /// <summary>
      /// Define o diretorio local onde esta o arquivo de configuração.
      /// </summary>
      /// <param name="localPath"></param>
      public void setLocalPath(string localPath)
      {
         this.localPath = localPath;
      }

      /// <summary>
      /// Retorna o caminho do diretório local
      /// </summary>
      /// <returns>localPtah</returns>
      public string getLocalPath()
      {
         return localPath;
      }      

      /// <summary>
      /// Define o nome do arquivo de configuração
      /// </summary>
      /// <param name="fileName"></param>
      public void setfileName(string fileName)
      {
         this.fileName = fileName;
      }

      /// <summary>
      /// Retorna o nome do arquivo de configuração
      /// </summary>
      /// <returns>fileName</returns>
      public string getfileName()
      {
         return fileName;
      }

      /// <summary>
      /// Método que irá montar a string de conexão para o banco de dados PostgreSQL
      /// </summary>
      /// <returns>string</returns>
      public string readDriverPGSQL()
      {
         string stConnect = "";
         try
         {
            XmlDocument domDoc = new XmlDocument();
            
            string completePath = (this.localPath + this.fileName);
            int passada = 0;
               
            domDoc.Load(completePath);

            //Seleciona somente o node com atributo igual ao especificado. Utilizando XPath.
            foreach (XmlNode node in domDoc.SelectSingleNode("//driver[@name='PGSQL']"))
            {
               passada++;
               string strName = node.Name;
               string strValue = node.InnerText;

               //Converte o caracter underscore por espaço. No node Name
               StringBuilder newStrName = new StringBuilder(strName);
               newStrName.Replace("_", " ");

               //Monta a string de conexão
               if (passada == 1)
               {
                  stConnect += (newStrName + "=" + strValue);
               }
               else
               {
                  stConnect += "; " + (newStrName + "=" + strValue);
               }
            }
            //Retorna string preenchida
            return (stConnect);
         }
         catch(XmlException xmlEx)
         {
            return (xmlEx.Message);
         }
         catch(Exception ex)
         {
            return (ex.Message);
         }
      }

      /// <summary>
      /// Método que irá montar a string de conexão para o banco de dados Microsoft SQL Server
      /// </summary>
      /// <returns>string</returns>
      public string readDriverMSSQL()
      {
         string stConnect = "";
         try
         {
            XmlDocument domDoc = new XmlDocument();

            string completePath = (this.localPath + this.fileName);
            int passada = 0;

            domDoc.Load(completePath);

            //Seleciona somente o node com atributo igual ao especificado. Utilizando XPath.
            foreach (XmlNode node in domDoc.SelectSingleNode("//driver[@name='MSSQL']"))
            {
               passada++;
               string strName = node.Name;
               string strValue = node.InnerText;

               //Converte o caracter underscore por espaço. No node Name
               StringBuilder newStrName = new StringBuilder(strName);
               newStrName.Replace("_", " ");

               //Monta a string de conexão
               if (passada == 1)
               {
                  stConnect += (newStrName + "=" + strValue);
               }
               else
               {
                  stConnect += "; " + (newStrName + "=" + strValue);
               }
            }
            //Retorna string preenchida
            return (stConnect);
         }
         catch (XmlException xmlEx)
         {
            return (xmlEx.Message);
         }
         catch (Exception ex)
         {
            return (ex.Message);
         }
      }
   }
}


Arquivo XML dbConfig.xml
<?xml version="1.0" encoding="utf-8" ?>
<!--Não insira comentários dentro dos nós abaixo-->
<dbConfig>
  <driver name="PGSQL">
    <Server>192.100.100.100</Server>
    <Port>5432</Port>
    <User_Id>admin</User_Id>
    <Password>12345678</Password>
    <Database>db_pgsql</Database>
  </driver>
  <driver name="MSSQL">
    <Server>192.100.100.110</Server>
    <User_Id>admin</User_Id>
    <Password>12345678</Password>
    <Database>db_mssql</Database>
  </driver>
</dbConfig>


Scripts recomendados

Xml2Txt

Manipulação de registros em arquivos utilizando índices

file_exists() em C

Arquivo com números aleatórios.


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts