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.264 ]
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 1
Nenhum comentário foi encontrado.
Desktop Linux ganha fôlego enquanto distros refinam experiência e segurança
Wayland em alta, IA em debate e novos ventos para distros e devices
Qt 6.10 e Python 3.14 puxam o ritmo do software livre nesta quarta
Atualizações de Apps, Desktop e Kernel agitam o ecossistema Linux nesta terça-feira
Como mudar o nome de dispositivos Bluetooth via linha de comando
Adicionando o repositório backports no Debian 13 Trixie
Meu Amigo não consegue entrar em meu mundo, via tailscale, hamachi e z... (1)
Erro ao fazer remaster usando Penguin eggs (1)
Warcraft II Remastered no Linux? (0)
queria saber como instalar o android power tools igual ao winux no lin... (7)