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.355 ]
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 2
Usando MySQL na linguagem C - Exemplo 3
Usando MySQL na linguagem C - Exemplo 5
Nenhum comentário foi encontrado.
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Como quebrar senha usando john the ripper
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Podem me chamar de 1mbecil :) (18)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (0)
Não consigo instalar distro antiga no virtualbox nem direto no hd (18)









