Você está na página 1de 12

APOSTILA NETBEANS / POSTGRESQL - JAVA

Configuração PostgreSQL

Selecionar o PostgreSQL pgAdmin II

Botão direito em PostgreSQL 9.0 e selecionar a opção


Connect.

Informar a senha de configuração do PostgreSQL.

Depois de identificada a senha o sistema estará pronto para ser


utilizado.

Para criar um novo


Banco de dados
basta clicar com o
botão direito sobre
Databases  New
Database...

Ou selecionar a
opção para criar
através de instruções
em SQL.

Para isso basta


selecionar um banco
já existente e clicar no
botão SQL na barra
de atalhos.
Na tela Query você irá digitar as instruções desejadas.

Para executá-las a instrução deverá clicar no menu Query Execute ou pressionar a tecla F5.

ATENÇÃO:

Para criar a tabela


sempre selecionar o
banco antes e depois
clicar no botão SQL.

A configuração definida
aqui mostra qual o
banco de dados que
será modificado.

Tela de configuração do PostgreSQL.


As configurações serão necessárias na configuração do banco no Java.

Se conecte ao PostgreSQL e desenvolva o banco de dados abaixo.


Script SQL:

CREATE TABLE usuarios (


nome varchar(50) NOT NULL,
email varchar(50) NOT NULL,
idade int
);

INSERT INTO usuarios (nome, email, idade) VALUES


('Ana', 'ana@meuemail.com', 23),
('Claudio', 'claudio@seuemail.com', 29);

Banco criado e alguns dados inseridos. Vamos para o NetBeans!

Vamos criar nosso projeto. Para isso faça:

1. Arquivo > Novo Projeto;


2. Escolha categoria: Java. Projeto: Aplicativo Java;
3. Clique em Próximo;
4. Coloque um nome para o projeto – Exemplo:
BancoPostgre e clique em finalizar;

Nosso projeto foi criado.

Agora vamos adicionar o driver JDBC para que nossa


aplicação consiga se conectar ao Banco de Dados. Para
isso:
1. Clique com o botão direito em cima do Projeto >
Propriedades.
2. Selecione a opção Bibliotecas e clique no botão Adicionar
JARs/pasta.
3. Vá até o JDBC do PostgreSQL (fica na mesma pasta onde
está instalado o programa) selecione o arquivo .jar
4. Clique em OK  OK

Pronto. O JDBC já foi adicionado a nossa aplicação. Agora vamos fazer um pouco de código.
Nós iremos fazer toda a conexão com banco de dados direto da classe principal que o NetBeans
nos forneceu.

Escolher o banco de dados:


Aba Serviços  banco de dados  botão direito do mouse  Nova Conexão

Clicar em OK, depois selecionar Public.

PARA O PROJETO (INTERFACE):

Clique com o botão direito sobre o projeto 


Novo  Formulário JFrame

Criar um formulário seguindo o modelo


abaixo:

BOTÃO CONSULTAR:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
String driver = "org.postgresql.Driver"; //Classe do driver JDBC
String banco = "usuario"; //Nome do Banco criado
String host = "localhost"; //Maquina onde está o banco
String str_conn = "jdbc:postgresql://" + host + ":5432/" + banco; //URL de conexão
String usuario = "postgres"; //Usuário do banco
String senha = "root"; //Senha de conexão

try {
Class.forName(driver); //Carrega o driver

//Obtém a conexão com o banco


Connection conn = DriverManager.getConnection(str_conn, usuario, senha);

//Cria um statement para podermos mandar um SQL para o banco


Statement stmt = conn.createStatement();
//Mandamos o SQL para o banco e obtemos um ResultSet
String sql = "SELECT * FROM usuarios";
ResultSet rs = stmt.executeQuery(sql);

//Percorrendo o ResultSet e obtendo os valores do banco


while (rs.next()) {
System.out.println(rs.getString("nome"));
System.out.println(rs.getString("email"));
System.out.println(rs.getInt("idade"));
System.out.println("====================================");
}
}
catch (ClassNotFoundException ex) {
System.out.println("Não foi possível carregar o driver.");
ex.printStackTrace();
}
catch (SQLException ex) {
System.out.println("Problema com o SQL");
ex.printStackTrace();
}
}

BOTÃO INSERIR:

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
String driver = "org.postgresql.Driver"; //Classe do driver JDBC
String banco = "usurio"; //Nome do Banco criado
String host = "localhost"; //Maquina onde está o banco
String str_conn = "jdbc:postgresql://" + host + ":5432/" + banco; //URL de conexão
String usuario = "postgres"; //Usuário do banco
String senha = "root"; //Senha de conexão

try {
Class.forName(driver); //Carrega o driver

//Obtém a conexão com o banco


Connection conn = DriverManager.getConnection(str_conn, usuario, senha);

//Cria um statement para podermos mandar um SQL para o banco


Statement stmt = conn.createStatement();

String sqlinsert ="insert into usuarios (nome,email,idade) values ('"+


jTextField1.getText()+"','"+
jTextField2.getText()+"','"+
jTextField3.getText()+"')";
stmt.executeUpdate(sqlinsert);
JOptionPane.showMessageDialog(null,"Gravação realizado com sucesso!");

}
catch (ClassNotFoundException ex) {
System.out.println("Não foi possível carregar o driver.");
ex.printStackTrace();
}
catch (SQLException ex) {
System.out.println("Problema com o SQL");
ex.printStackTrace();
}
}

BOTÃO LIMPAR:

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
}

BOTÃO SAIR:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {


// TODO add your handling code here:
System.exit(0);
}

PROGRAMA PRINCIPAL – PROGRAMA PRINCIPAL:

package bancopost4;
/**
*
* @author Giselle Pires
*/
public class BancoPost4 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
}

Botão Delete:
int[] selected = masterTable.getSelectedRows();
List<desktopapplication1.Clientes> toRemove = new
ArrayList<desktopapplication1.Clientes>(selected.length);
for (int idx=0; idx<selected.length; idx++) {
desktopapplication1.Clientes c =
list.get(masterTable.convertRowIndexToModel(selected[idx]));
toRemove.add(c);
entityManager.remove(c);
}
list.removeAll(toRemove);
setSaveNeeded(true);
Criando classes de entidade
Para criar classes de entidade para representar o banco de dados que é vinculado a JTable:

1. Na janela Projetos, clique com o botão direito do mouse em seu projeto e escolha Novo > Outro, selecione a

categoria Persistência, e selecione as Classes de entidade no modelo de banco de dados.

2. Na página Tabelas de banco de dados do assistente, selecione a conexão de banco de dados.

3. Quando a coluna Tabelas disponíveis é preenchida, selecione as tabelas que você deseja usar em seu

aplicativo e clique em Adicionar para movê-las para a coluna Tabelas selecionadas. Clique em Próximo.

4. Na página Classes de entidade do assistente, verifique se a caixa de diálogo Gerar anotações de consulta

nomeadas para campos persistentes está marcada.

5. Faça quaisquer personalizações que deseja fazer nos nomes das classes geradas e em sua localização.
6. Clique em Criar unidade de persistência.

7. Na caixa de diálogo Criar unidade de persistência, verifique as seguintes coisas:

o Se a biblioteca de persistência selecionada é TopLink.

o Se a estratégia de geração de tabela selecionada é "None".

8. Clique em Terminar.

Você deve ver nós das classes de entidade na janela Projetos.

Vinculando componentes aos beans que representam os dados


Esta seção mostra como você pode vincular dados a componentes JTable, JList e JComboBox.

Para adicionar uma tabela de banco de dados a um formulário e gerar automaticamente um JTable para

exibir o conteúdo da tabela do banco de dados:


1. Abra a janela Serviços (Ctrl-5).

2. Conecte-se ao banco de dados que contém a tabela que você deseja adicionar ao formulário. (Você pode se

conectar ao banco de dados clicando com o botão direito do mouse no nó da conexão do banco de dados e

escolhendo Conectar.)

3. Expanda o nó da conexão e expanda seu nó Tabelas.

4. Arraste o nó para a tabela no formulário e pressione Ctrl enquanto arrasta a tabela.

Um JTable é criado e suas colunas são vinculadas às colunas na tabela do banco de dados.

Para vincular uma tabela de banco de dados a um componente JTable existente:

1. Clique com o botão direito do mouse no Construtor de GUI e escolha Vincular > elementos.

2. Clique em Importar dados para formulário. Na caixa de diálogo Importar dados para formulário, selecione a

tabela de banco de dados a qual você deseja vincular seus componentes. Clique em OK.

3. Na caixa de combinação Vincular origem, selecione o item que representa a lista de resultados da classe da

entidade. Por exemplo, se a classe da entidade for chamada, Customer.java, o objeto da lista seria gerado

como customerList.

4. Deixe o valor expressão de vinculação como nulo.

5. Se houver quaisquer colunas de banco de dados que você deseja que apareça na JTable, selecione essas

colunas na lista Selecionado e mova-as para a lista Disponível.

6. Selecione a aba Avançado para configurar a vinculação. Por exemplo, você pode especificar um validador ou

conversor, ou pode especificar o comportamento se a origem da vinculação for nula ou ilegível.

7. Clique em OK.

Para vincular os dados a um componente JList:

1. Clique com o botão direito do mouse no Construtor de GUI e escolha Vincular > elementos.

2. Clique em Importar dados para formulário. Na caixa de diálogo Importar dados para formulário, selecione a

tabela de banco de dados a qual você deseja vincular seus componentes. Clique em OK.

3. Na caixa de combinação Vincular origem, selecione o item que representa a lista de resultados da classe da

entidade. Por exemplo, se a classe da entidade for chamada, Customer.java, o objeto da lista seria gerado

como customerList.

4. Deixe o valor expressão de vinculação como nulo.

5. Na lista suspensa Exibir expressão, selecione a propriedade que representa a coluna do banco de dados que

contém os valores que você deseja exibir na lista.

6. Selecione a aba Avançado para configurar a vinculação.

7. Clique em OK.

Para vincular os dados a um componente JComboBox:

1. Clique com o botão direito do mouse na caixa de combinação e escolha Vincular > Elementos.

2. Clique em Importar dados para formulário. Na caixa de diálogo Importar dados para formulário, selecione a

tabela de banco de dados a qual você deseja vincular seus componentes. Clique em OK.
3. Na caixa de combinação Vincular origem, selecione o item que representa a lista de resultados da classe da

entidade. Por exemplo, se a classe da entidade for chamada, Customer.java, o objeto da lista seria gerado

como customerList.

4. Deixe o valor expressão de vinculação como nulo.

5. Clique com o botão direito do mouse na caixa de combinação novamente e escolha Vincular > Item

selecionado.

6. Vincule à propriedade que você deseja que seja afetada pela seleção do usuário. Clique em OK.

A biblioteca Vinculação de Beans (a partir da versão 1.2.1) não possui uma classe DetailBinding que permite que você

especifique como derivar os valores de exibição de JComboBox. Portanto, você precisará escrever algum código

personalizado. Uma abordagem é escrever um renderizador de célula personalizado, como mostrado abaixo.

Para renderizar a caixa de combinação adequadamente:

1. Selecione a caixa de combinação.

2. Na aba Propriedades da janela Propriedades, selecione a propriedade renderer.

3. Clique no botão de reticências.

4. Na caixa de combinação na parte superior do editor de propriedades, selecione Personalizar código.

5. Na área de texto, indique um código semelhante ao seguinte (onde jComboBox1 é o nome da instância

JComboBox, MyEntityClass é a classe da entidade e getPropertyFromMyEntityClass() é o

getter da propriedade na classe da entidade que você está vinculando.

jComboBox1.setRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(
JList list, Object value, int index, boolean isSelected, boolean
cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected,
cellHasFocus);
if (value instanceof MyEntityClass) {
MyEntityClass mec = (MyEntityClass)value;
setText(mec.getPropertyFromMyEntityClass());
}
return this;
}
})
Observação: você também pode criar um renderizador personalizado em seu próprio arquivo de código-fonte, compilar

o arquivo, arrastar o renderizador para o formulário e definir a propriedade do renderizador da caixa de combinação para

usar este bean. Você pode ver esta abordagem em uso no tutorial Criando um aplicativo de banco de dados de área de

trabalho personalizado.

Propriedades de vinculação especiais


Onde necessário, a biblioteca de vinculação de beans fornece propriedades sintéticas especiais para alguns componentes

Swing que estão faltando nos próprios componentes. Essas propriedades representam coisas, tais como uma linha

selecionada da tabela, que são úteis para vincular a outras propriedades.

Abaixo há uma lista de propriedades sintéticas adicionadas pelas bibliotecas de vinculação de beans:
Componente Propriedade Descrição

AbstractButton selecionado O estado selecionado de um botão.

JComboBox selectedItem O item selecionado de uma JComboBox.

valor O valor de um JSlider; notifica de todas as alterações.

JSlider
O mesmo que "valor" mas não notifica de alteração
value_IGNORE_ADJUSTING
enquanto o controle deslizante está ajustando seu valor.

O elemento selecionado de uma JList; notifica de todas


as alterações. Se houver uma JListBinding com a JList
como destino, o elemento selecionado é indicado como
selectedElement um elemento da lista de origem da vinculação. Caso
contrário, o elemento selecionado é indicado como um
objeto do modelo da lista. Caso nada esteja selecionado,
a propriedade é avaliada como nula.

Uma lista que contém os elementos selecionados de


uma JList; notifica de todas as alterações. Se houver
uma JListBinding com a JList como destino, os
elementos selecionados são indicados como elementos
JList selectedElements
da lista de origem da vinculação. Caso contrário, os
elementos selecionados são indicados como objetos do
modelo da lista. Caso nada esteja selecionado, a
propriedade é avaliada como uma listas vazia.

O mesmo que "selectedElement" mas não notifica de


selectedElement_IGNORE_ADJUSTING alteração enquanto a seleção da lista está sendo
atualizada.

O mesmo que "selectedElements" mas não notifica de


selectedElements_IGNORE_ADJUSTING alteração enquanto a seleção da lista está sendo
atualizada.

JTable O elemento selecionado de uma JTable; notifica de


todas as alterações. Se houver uma JTableBinding com
a JTable como destino, o elemento selecionado é
indicado como um elemento da lista de origem da
vinculação. Caso contrário, o elemento selecionado é
selectedElement indicado como um mapa onde as chaves são compostas
da "coluna" da string mais o índice da coluna e os
valores são valores de modelo dessa coluna. Exemplo:
{column0=column0value, column1=column1value, ...}
Caso nada esteja selecionado, a propriedade é avaliada
como nula.

Uma lista que contém os elementos selecionados de


uma JTable; notifica de todas as alterações. Se houver
uma JTableBinding com a JTable como destino, os
elementos selecionados são indicados como elementos
da lista de origem da vinculação. Caso contrário, cada
elemento selecionado é indicado como um mapa onde
selectedElements
as chaves são compostas da "coluna" da string mais o
índice da coluna e os valores são valores de modelo
dessa coluna. Exemplo: {column0=column0value,
column1=column1value, ...} Caso nada esteja
selecionado, a propriedade é avaliada como uma lista
vazia.

O mesmo que "selectedElement" mas não notifica de


selectedElement_IGNORE_ADJUSTING alteração enquanto a seleção da tabela está sendo
atualizada.

selectedElements_IGNORE_ADJUSTING O mesmo que "selectedElements" mas não notifica de


alteração enquanto a seleção da tabela está sendo
atualizada.

A propriedade texto de um JTextComponent; notifica de


texto
todas as alterações (incluindo digitação).

JTextComponent A propriedade de texto de um JTextComponent; notifica


(incluindo suas text_ON_FOCUS_LOST de alteração somente quando o foco é perdido no
subclasses JTextField, componente.
JTextArea e
JEditorPane)
A propriedade de texto de um JTextComponent; notifica
de alteração somente quando o componente notifica de
text_ON_ACTION_OR_FOCUS_LOST
actionPerformed ou quando o foco é perdido no
componente.

Você também pode gostar