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.286 ]
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);
}
}
}
Gerar dados aleatórios no MySQL
Usando MySQL na linguagem C - Exemplo 1
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?









