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: 12.254 ]

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 <crochadejesus@yahoo.com.br>
 * @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

Barra de progresso em forma de “roda”

Cadastro de Alunos

Mexendo com arquivos em C

Cadastro de Alunos Versao 1.0

Arquivos em C


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts