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.477 ]
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>
leitura/escrita de dados/estruturas em arquivo
Manipulação de arquivos CSV - Estruturado
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?
Mint Xfce não mantém a conexão no wi-fi (2)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









