.NET - Convertendo uma fonte de dados MS Access para PostgreSQL |
No artigo de hoje vou mostrar como converter uma fonte de dados MS Access para PostgreSQL e acessar os dados usando a plataforma .NET. |
Você já precisou converter uma fonte de dados do MS Access para PostgreSQL ?
Procurando no Google você vai encontrar muitas ferramentas que se propõe a realizar essa tarefa.
Nota: No site do PostgreSQL existe um link para uma ferramenta que faz isso: https://dbconvert.com/access/postgresql/ mas ela não é grátis.
No site da empresa Bullzip existe uma ferramenta gratuita chamada : Access to PostgreSQL que faz a conversão. É sobre essa ferramenta que o artigo vai tratar.
Para poder usar a ferramenta e enviar as tabelas do MS Access diretamente para o PostgreSQL você vai precisar baixar um driver ODBC para o PostgreSQL neste link : http://www.postgresql.org/ftp/odbc/versions/msi/. (Não é preciso configurar uma conexão ODBC o programa faz isso para você.)
Convertendo MS Access para PostgreSQL
Então após baixar e instalar o driver ODBC e a ferramenta a conversão é uma tarefa bem simples.
Vou mostrar o passo a passo da conversão do banco de dados Northwind.mdb para PostgreSQL:
1- A tela inicial do programa
2- O formulário para informar a fonte de dados MS Access a ser convertida
3- O formulário para definir o modo de acesso e informar os dados da conexão com o PostgreSQL e o nome de destino
4- O formulário onde podemos selecionar as tabelas que serão convertidas
5- O formulário com as opções de transferência
6- O formulário informando o progresso da conversão e ao final mostrando o resultado da conversão
Abrindo o pgAdmin III podemos verificar a existência do schema Northwind_pgsql que foi gerado pela ferramenta como conversão do banco de dados Northwind.mdb.
Agora para mostrar que os dados existem e que podemos acessá-los usando o PostgreSQL vou criar um exemplo usando a linguagem VB .NET e também C#.
Nota: Para saber mais sobre as strings de conexão usadas para o PostgreSQL veja esse link : https://www.connectionstrings.com/postgresql/
Recursos usados
Conectando com o banco de dados Northwind_pgsql
Acessar um banco de dados PostegreSQL na plataforma .NET é muito simples. Vou criar uma solução com dois projetos: um projeto VB .NET e outro C#, para acessar o banco de dados que convertemos.
Abra o VS Community 2015 e clique em New Project;
A seguir selecione Other Project Types e clique em Visual Studio Solutions;
Selecione Blank Solution e informe o nome Acessando_PostgreSQL e clique em OK;
Agora vamos incluir dois projetos nesta solução.
No menu File clique em New Project;
Selecione a linguagem Visual C# e o template Windows Forms Application e informe o nome PostgreSQL_CSharp e clique em OK;
Repetindo o procedimento acima.
Selecione a linguagem Visual Basic e o template Windows Forms Application e informe o nome PostgreSQL_VBNET e clique em OK;
Agora vamos incluir a referência ao conector PostgreSQL via Nuget em ambos os projetos da solução. Vou usar o Npgsql.
No menu Tools clique em Nuget Package Manager e a seguir em Manage Nuget Packages for Solution;
Selecione o pacote Npgsql e clique em Install para os dois projetos da solução:
Agora temos tudo pronto para acessar o banco de dados Northwind_pgsql.
Vou abrir o projeto VB .NET e definir uma interface de usuário bem simples onde iremos ter os seguintes controles:
O leiaute do formulário deverá ficar assim :
Neste momento vamos definir o código do evento Click do botão de comando para acessar o banco de dados e a tabela informada exibindo os dados no controle DataGridView:
Imports System.Data
Imports Npgsql
Public Class form1
Shared serverName As String = "127.0.0.1"
Shared port As String = "5432"
Shared userName As String = "postgres"
Shared password As String = "sua_senha"
Shared databaseName As String = "Northwind_pgsql"
Private pgsqlConnection As NpgsqlConnection = Nothing
Private connString As String = Nothing
Private Sub btnExecutar_Click(sender As Object, e As EventArgs) Handles btnExecutar.Click
Dim ConexaoPG As String = String.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};",
serverName, port, userName, password, databaseName)
Dim conn As NpgsqlConnection = Nothing
Try
'Instancia NpgsqlConnection na variavel conn
conn = New NpgsqlConnection(ConexaoPG)
'Abre a conexão
conn.Open()
'Declara e atribui a instrucao SQL de consulta
Dim SQL As String = "SELECT * FROM public." & cboTabelas.Text
'Instancia o NpgsqlDataAdapter responsavel pela comunicação
'é feita a leitura dos dados preenchendo o dataset
Dim da As Npgsql.NpgsqlDataAdapter = New NpgsqlDataAdapter(SQL, conn)
'Instancia um DataSet
Dim ds As DataSet = New DataSet()
'Preenche o DataAdapter
da.Fill(ds, cboTabelas.Text)
'Atribui um Datasource a Grid
dgvDados.DataSource = ds.Tables(0).DefaultView
Catch ex As Exception
MsgBox(ex.Message)
Finally
If Not conn Is Nothing Then
If conn.State = ConnectionState.Open Then
conn.Close()
End If
End If
End Try
End Sub
Private Sub form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cboTabelas.SelectedIndex = 0
End Sub
End Class
|
O código CSharp é visto a seguir:
using System;
using System.Data;
using System.Windows.Forms;
using Npgsql;
namespace PostgreSQL_CSharp
{
public partial class Form1 : Form
{
static string serverName = "127.0.0.1";
static string port = "5432";
static string userName = "postgres";
static string password = "sua_senha";
static string databaseName = "Northwind_pgsql";
public Form1()
{
InitializeComponent();
}
private void btnExecutar_Click(object sender, EventArgs e)
{
string ConexaoPG = string.Format("Server={0};Port={1};User Id={2};Password={3};Database={4};",
serverName, port, userName, password, databaseName);
NpgsqlConnection conn = null;
try
{
//Instancia NpgsqlConnection na variavel conn
conn = new NpgsqlConnection(ConexaoPG);
//Abre a conexão
conn.Open();
//Declara e atribui a instrucao SQL de consulta
string SQL = "SELECT * FROM public." + cboTabelas.Text;
//Instancia o NpgsqlDataAdapter responsavel pela comunicação
//é feita a leitura dos dados preenchendo o dataset
Npgsql.NpgsqlDataAdapter da = new NpgsqlDataAdapter(SQL, conn);
//Instancia um DataSet
DataSet ds = new DataSet();
//Preenche o DataAdapter
da.Fill(ds, cboTabelas.Text);
//Atribui um Datasource a Grid
dgvDados.DataSource = ds.Tables[0].DefaultView;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if ((conn != null))
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
cboTabelas.SelectedIndex = 0;
}
}
}
|
Executando o projeto e selecionando uma tabela iremos obter os dados exibidos no controle datagridview.
Nota: Se você obter a mensagem de erro : “relation <tablename> does not exist.” verifique as permissões e privilégios do usuário que esta acessando a tabela.
Pegue o projeto completo aqui : Acessando_PostgreSQL.zip
Jesus lhes respondeu, e disse: A minha
doutrina não é minha, mas daquele que me enviou.
Se alguém quiser fazer a vontade Dele, pela mesma doutrina conhecerá se ela é de
Deus, ou se eu falo de mim mesmo.
João 7:16,17
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
ASP .NET- Usando GridView (C#) para iniciantes - Macoratti .