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.475 ]
Homepage: www.zambotecnologia.com.br
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.
/**
 * 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>
Manipulaçao de arquivos e Meta dados em videos
Agenda eletrônica completa em C
Listar arquivos e diretórios com suas propriedades
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Instalação dualboot Windows 11 e Debian 13 (0)
Programa fora de escala na tela do pc (33)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (0)









