Ir ao conteúdo
  • Cadastre-se
Luiz Serpa

C# Conexão Banco de Dados

Recommended Posts

Um programador me passou o seguinte código abaixo para estudar:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Npgsql;

namespace SimpleAction.DAO
{
    public class PostgreConnection : IConnection
    {
        NpgsqlConnection conn = new NpgsqlConnection(Properties.Settings.Default.connectionstring);
        NpgsqlTransaction transacao = null;

        public PostgreConnection()
        {
            conn.Open();
        }

        public bool InTransaction { get => transacao != null; }

        public void BeginTransaction()
        {
            transacao = conn.BeginTransaction();
        }

        public void CommitTransaction()
        {
            transacao?.Commit();
            transacao?.Dispose();

            transacao = null;
        }

        public DataTable GetDataTable(string SQL)
        {
            using (var cmd = new NpgsqlCommand(SQL, conn))
            {
                using (var da = new NpgsqlDataAdapter(cmd))
                {
                    var dt = new DataTable();
                    da.Fill(dt);
                    return dt;
                }
            }
        }
        
        public void RollbackTransaction()
        {
            transacao?.Rollback();
            transacao?.Dispose();

            transacao = null;
        }

        public void RunCommand(string SQL)
        {
            using (var cmd = new NpgsqlCommand(SQL, conn, transacao))
                cmd.ExecuteNonQuery();
        }


       
    }


}

Ele mencionou que desta forma você não fica amarrado ao banco de dados, na hora de fazer os comando e consulta ao banco utiliza a Interface IConnection, que está com o seguinte código:

 

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SimpleAction.DAO
{
    public interface IConnection
    {
        DataTable GetDataTable(string SQL);
        void RunCommand(string SQL);
        void BeginTransaction();
        void CommitTransaction();
        bool InTransaction { get; }
        void RollbackTransaction();
    }
}

Ainda tem uma classe chamada Current:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SimpleAction.DAO
{
    public static class Current
    {
        public static IConnection Connection { get; } = new PostgreConnection();
    }
}

Na hora que vou fazer um SELECT por exemplo, ficou bem mais simplificado, pois utilizo apenas duas linhas:

 

 var dt = Connection.GetDataTable("SELECT * FROM users");
                dataGridView1.DataSource = dt;

Porém estou com problemas para validar um usuário e senha vindo de um formulário que devo consultar no banco de dados e validar se existe ele ou não, se existir ele entrar, pelo contrário não.

 

Achei em alguns fóruns falando para usar o DataReader, mas como implementaria esta nova ferramenta em meu sistema que estou usando para estudar?

 

O projeto está em anexo.

 

Obrigado deste já por quem se dispor a ajudar.

SourceCode.rar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×