C#
- PostGreSQL - CRUD Básico - II
Na primeira parte deste artigo apresentamos o PostGreSQL e a ferramenta de administração pgAdmin III e criamos o banco de dados cadastro e a tabela funcionarios.
Vamos agora criar uma aplicação do tipo Windows Forms usando a linguagem C#.
Abra o Visual C# 2010 Express Edition e no menu File clique em New Project e selecione o template Windows Forms Application informando o nome PostgreSQL_CRUD;
A seguir no formulário form1.cs vamos incluir os seguintes controles:
Conforme o leiaute da figura abaixo:
![]() |
Vamos referenciar o .Net Data Provider Npgsql em nosso projeto.
No menu Project clique em Add Reference;
A seguir clique na guia Browse e localize a pasta onde você descompactou os arquivos do Npgsql;
Selecione os arquivos Npgsql.dll e Mono.Security.dll e clique no botão OK;
![]() |
Criando a camada de Acesso a dados - DAL
Vamos criar uma classe no projeto onde iremos definir a nossa camada de acesso a dados.
No menu Project clique em Add Class e informe o nome DAL.cs;
A seguir vamos declarar os seguintes namespaces na classe:
| using
System; using System.Data; using Npgsql; |
No início da classe vamos declarar as variáveis que definem a conexão com o banco de dados
| static
string serverName = "127.0.0.1";
//localhost static string port = "5432"; //porta default static string userName = "postgres"; //nome do administrador static string password = "sua_senha"; //senha do administrador static string databaseName = "Cadastro"; //nome do banco de dados NpgsqlConnection pgsqlConnection = null; string connString = null; |
No construtor da classe vamos definir a string de conexão conforme o código a seguir:
| public
DAL() { connString = String.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};", serverName, port, userName, password, databaseName); } |
Vamos agora definir os seguintes métodos na classe DAL:
Nesses métodos iremos basicamente fazer o seguinte:
1- Método GetTodosRegistros()
//Pega todos os registros
public DataTable GetTodosRegistros()
{
DataTable dt = new DataTable();
try
{
using (pgsqlConnection = new NpgsqlConnection(connString))
{
// abre a conexão com o PgSQL e define a instrução SQL
pgsqlConnection.Open();
string cmdSeleciona = "Select * from funcionarios order by id";
using (NpgsqlDataAdapter Adpt = new NpgsqlDataAdapter(cmdSeleciona, pgsqlConnection))
{
Adpt.Fill(dt);
}
}
}
catch (NpgsqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
finally
{
pgsqlConnection.Close();
}
return dt;
}
|
Este método obtém todos os registros da tabela funcionarios e retorna um objeto DataTable();
2- Método GetRegistroPorId()
//Pega um registro pelo codigo
public DataTable GetRegistroPorId(int id)
{
DataTable dt = new DataTable();
try
{
using (NpgsqlConnection pgsqlConnection = new NpgsqlConnection(connString))
{
//Abra a conexão com o PgSQL
pgsqlConnection.Open();
string cmdSeleciona = "Select * from funcionarios Where id = " + id;
using (NpgsqlDataAdapter Adpt = new NpgsqlDataAdapter(cmdSeleciona, pgsqlConnection))
{
Adpt.Fill(dt);
}
}
}
catch (NpgsqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
finally
{
pgsqlConnection.Close();
}
return dt;
}
|
Neste método obtemos um registro da tabela funcionarios cujo id for igual ao argumento passado ao método.
3- Método InserirRegistros()
//Inserir registros
public void InserirRegistros(string nome,string email, int idade)
{
try
{
using (NpgsqlConnection pgsqlConnection = new NpgsqlConnection(connString))
{
//Abra a conexão com o PgSQL
pgsqlConnection.Open();
string cmdInserir = String.Format("Insert Into funcionarios(nome,email,idade) values('{0}','{1}',{2})",nome,email,idade);
using (NpgsqlCommand pgsqlcommand = new NpgsqlCommand(cmdInserir, pgsqlConnection))
{
pgsqlcommand.ExecuteNonQuery();
}
}
}
catch (NpgsqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
finally
{
pgsqlConnection.Close();
}
}
|
Este método inclui registros na tabela funcionarios.
4- Método AtualizarRegistro()
//Atualiza registros
public void AtualizarRegistro(int codigo, string email, int idade)
{
try
{
using (NpgsqlConnection pgsqlConnection = new NpgsqlConnection(connString))
{
//Abra a conexão com o PgSQL
pgsqlConnection.Open();
string cmdAtualiza = String.Format("Update funcionarios Set email = '" + email + "' , idade = " + idade + " Where id = " + codigo);
using (NpgsqlCommand pgsqlcommand = new NpgsqlCommand(cmdAtualiza, pgsqlConnection))
{
pgsqlcommand.ExecuteNonQuery();
}
}
}
catch (NpgsqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
finally
{
pgsqlConnection.Close();
}
}
|
Este método atualiza os campos email e idade de um registro da tabela.
5- Método DeletarRegistro()
//Deleta registros
public void DeletarRegistro(string nome)
{
try
{
using (NpgsqlConnection pgsqlConnection = new NpgsqlConnection(connString))
{
//abre a conexao
pgsqlConnection.Open();
string cmdDeletar = String.Format("Delete From funcionarios Where nome = '{0}'",nome);
using (NpgsqlCommand pgsqlcommand = new NpgsqlCommand(cmdDeletar, pgsqlConnection))
{
pgsqlcommand.ExecuteNonQuery();
}
}
}
catch (NpgsqlException ex)
{
throw ex;
}
catch (Exception ex)
{
throw ex;
}
finally
{
pgsqlConnection.Close();
}
}
|
Neste método excluímos um registro pelo nome do funcionário.
Em todos os métodos definidos estamos usando um bloco try/catch/finally onde capturamos as exceções lançadas no bloco catch e sempre fechamos a conexão no bloco Finally.
O método usado neste exemplo usa comandos SQL inline o que não é muito recomendado por ser passível de sofrer injeção SQL além de ser mais propenso a erros de digitação para instruções SQL mais complexas.
Na última parte do artigo vamos definir a interface com o usuário para realizar as operações na tabela funcionarios usando a camada de acesso a dados criada neste artigo: C# - PostGreSQL - CRUD Básico - III
Mat 22:29
Jesus, porém, lhes respondeu: Errais, não compreendendo as Escrituras nem o poder de Deus;Mat 22:30
pois na ressurreição nem se casam nem se dão em casamento; mas serão como os anjos no céu.Mat 22:31
E, quanto à ressurreição dos mortos, não lestes o que foi dito por Deus:Mat 22:32
Eu sou o Deus de Abraão, o Deus de Isaque, e o Deus de Jacó? Ora, ele não é Deus de mortos, mas de vivos.Referências: