Construindo uma classe de conexão com banco de dados em C# utilizando design pattern Singleton
Publicado por Claudio Rocha de Jesus (última atualização em 31/10/2009)
[ Hits: 19.309 ]
Homepage: www.zambotecnologia.com.br
Este arquivo contém duas classes de conexão com banco de dados, uma para o banco de dados PostgreSQL e outro para Microsoft SQL Server. As duas classes implementam o design pattern singleton, onde somente pode ser criada uma única instância da classe.
A primeira não utiliza lock e nem lazy initialization já a segunda (MSSQL) implementa.
Para montar a string de conexão utilizei outra classe que passarei em outro post.
/**
* Este arquivo contém duas classes de conexão com banco de dados,
* uma para o banco de dados PostgreSQL e outro para Microsoft SQL Server.
* As duas classes implementam o design pattern singleton, onde somente
* pode ser criada uma única instância da classe.
* A primeira não utiliza lock e nem lazy initialization já a segunda
* (MSSQL) implementa.
*
* @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 Npgsql;
using System.Data.SqlClient;
namespace DataAccessLayer
{
/// <summary>
/// Usa padrão Singleton para obter uma única instância do PostgreSQL.
/// Utilizando thread-safe sem usar locks e not lazy.
/// </summary>
public sealed class ConnectPGSQL
{
//Cria instância da classe internamente
private static readonly ConnectPGSQL _Instance = new ConnectPGSQL();
//Construtor privado, não pode ser instanciado diretamente.
private ConnectPGSQL()
{
}
public static ConnectPGSQL getInstance()
{
return _Instance;
}
public NpgsqlConnection openConnection()
{
//Utilizando classe que gera string de conexão do xml
OpenConfig openPGSQL = new OpenConfig();
string stConnPGSQL = openPGSQL.readDriverPGSQL();
NpgsqlConnection pgsql = new NpgsqlConnection(stConnPGSQL);
pgsql.Open();
return(pgsql);
}
}
/// <summary>
/// Usa padrão Singleton para obter uma única instância do Microsot SQL Server.
/// Utilizando thread-safe usando locks e lazy initialization e o modelo
/// Double Check Lock.
/// </summary>
public sealed class ConnectMSSQL
{
//Cria instância da classe internamente, inicialmente como nula
private static volatile ConnectMSSQL _Instance = null;
//Construtor privado, não pode ser instanciado diretamente.
private ConnectMSSQL()
{
}
public static ConnectMSSQL getInstance()
{
if (_Instance == null)
{
lock (typeof(ConnectMSSQL))
{
if (_Instance == null)
_Instance = new ConnectMSSQL();
}
}
return _Instance;
}
public SqlConnection openConnection()
{
//Utilizando classe que gera string de conexão do xml
OpenConfig openMSSQL = new OpenConfig();
string stConnMSSQL = openMSSQL.readDriverMSSQL();
//Conectando no banco de dados
SqlConnection mssql = new SqlConnection(stConnMSSQL);
mssql.Open();
return(mssql);
}
}
}
Usando MySQL na linguagem C - Exemplo 5
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Ativando e usando "zoom" no ambiente Cinnamon
Vídeo Nostálgico de Instalação do Conectiva Linux 9
Como realizar um ataque de força bruta para desobrir senhas?
existe algum hub de jogos online similiar ou igual dos browser (6)
Como botar o efeito de deslocar janelas (win + setas - windows) no lin... (0)
Thinkpads são bons mesmo ?! (3)
Eu queria adicionar a incon do wifi e deixa transparente no fluxbox no... (2)









