Você está aqui: Java ::: Java + Bancos de Dados ::: Connection |
Terminou de usar a Connection? Feche-aQuantidade de visualizações: 7127 vezes |
É sempre recomendável fechar a conexão com o banco de dados quando esta não for mais necessária. Isso faz com que os recursos do JDBC e aqueles alocados junto ao DBMS (SGBD) sejam liberados o mais rápido possível. A conexão obtida por meio de um objeto da interface Connection é fechada por meio de uma chamada ao seu método close(). Veja sua assinatura: void close() throws SQLException Note que o método lança uma exceção do tipo SQLException se houver algum erro durante o fechamento da conexão. Vamos ver um exemplo? Veja um trecho de código no qual obtemos uma conexão com o banco de dados e a fechamos em seguida: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // vamos obter a conexão Connection conn = DriverManager.getConnection(url, usuario, senha); System.out.println("Conexão obtida com sucesso."); // vamos fechar a conexão conn.close(); System.out.println("Conexão fechada com sucesso."); É claro que podemos deixar a conexão aberta e esperar que, uma vez que não haja mais referência a ela, a mesma seja elegível para coleta por parte do coletor de lixo. Porém, esta prática não é recomendada. Outro detalhe importante é em relação a transações. Se o método close() for chamado antes da aplicação finalizar uma transação, os resultados podem ser imprevisíveis. |
![]() |
Java ::: Pacote java.awt.event ::: KeyEvent |
Java Swing - Como obter o caractere da tecla pressionada usando o método getKeyChar() da classe KeyEvent do JavaQuantidade de visualizações: 3044 vezes |
Em algumas situações nós precisamos obter o caractere da tecla pressionada em nossas aplicações Java Swing. Para isso podemos usar o método getKeyChar() da classe KeyEvent. Veja sua assinatura:public char getKeyChar() O retorno do método é um char representando o caractere associado à tecla "digitada" (pressionada e liberada). Veja um trecho de código no qual temos uma janela JFrame que implementa a interface KeyListener e reage ao evento keyTyped() mostrando a letra digitada: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JOptionPane; public class Janela extends JFrame implements KeyListener{ public Janela(){ super("Eventos do Teclado"); Container c = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.LEFT); c.setLayout(layout); // vamos adicionar o objeto listener addKeyListener(this); setSize(350, 250); setVisible(true); } @Override public void keyPressed(KeyEvent e){ // sem implementação } @Override public void keyReleased(KeyEvent e){ // sem implementação } @Override public void keyTyped(KeyEvent e){ // vamos obter o caractere que foi digitado char letra = e.getKeyChar(); // mostra o caractere digitado JOptionPane.showMessageDialog(null, "O caractere pressionado foi: " + letra); } public static void main(String args[]){ Janela j = new Janela(); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } É importante observar que o valor retornado pelo método getKeyChar() só possui sentido quando usado com eventos KEY_TYPED, uma vez que o caractere não é exibido quando o método é usado com os eventos KEY_PRESSED e KEY_RELEASED. Note ainda que a tecla Shift pode ser usada durante este evento. Assim, se combinarmos Shift + "s", o retorno será "S". Este método retorna o valor da constante KeyEvent.CHAR_UNDEFINED se um caractere Unicode válido não existir para o evento de "digitação" da tecla. |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação Orientada a Objetos em Java - Java OOP - Como chamar o construtor de uma superclasse a partir da classe derivadaQuantidade de visualizações: 19035 vezes |
Em algumas situações, é necessário efetuar uma chamada ao construtor de uma superclasse a partir da sub-classe, ou classe derivada. Principalmente quando temos que inicializar dados privados pertencentes à superclasse. Imaginemos o seguinte cenário: uma classe Pessoa cujo construtor recebe o nome e idade da pessoa. Temos então uma classe Aluno que herda de pessoa e cujo construtor recebe nome, idade e matrícula. Desta forma, temos aqui uma boa oportunidade para efetuarmos uma chamada ao construtor da superclasse a partir da classe derivada. Comece criando a classe Pessoa (Pessoa.java): ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Pessoa{ public String nome; public int idade; // construtor da classe public Pessoa(String nome, int idade){ this.nome = nome; this.idade = idade; } } Compile Pessoa.java. Agora vamos criar um classe Aluno (Aluno.java) que herda da classe Pessoa: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Aluno extends Pessoa{ public String matricula; // construtor public Aluno(String nome, int idade, String matricula){ // chama o construtor da superclasse super(nome, idade); this.matricula = matricula; } } Compile Aluno.java e escreva o programa abaixo, que demonstra como a chamada ao construtor da superclasse é feita a partir da subclasse, ou classe derivada: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Estudos{ public static void main(String args[]){ // cria um objeto da classe Aluno Aluno aluno = new Aluno("Osmar J. Silva", 36, "AC434-23"); // Exibe o resultado System.out.println("Nome: " + aluno.nome + "\n" + "Idade: " + aluno.idade + "\n" + "Matrícula: " + aluno.matricula); } } Execute este código e observe alguns detalhes interessantes. O mais importante é a forma de chamar o construtor da superclasse: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // chama o construtor da superclasse super(nome, idade); Veja como recebemos três variáveis no construtor da classe Aluno e passamos duas delas para o construtor da superclasse. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Como resolver o problema da Torre de Hanói recursivamenteQuantidade de visualizações: 2042 vezes |
Pergunta/Tarefa: Torre de Hanói, ou The Towers of Hanoi, é um "quebra-cabeça" que consiste em uma base contendo três pinos, em um dos quais são dispostos alguns discos uns sobre os outros, em ordem crescente de diâmetro, de cima para baixo. O problema consiste em passar todos os discos de um pino para outro qualquer, usando um dos pinos como auxiliar, de maneira que um disco maior nunca fique em cima de outro menor em nenhuma situação. O número de discos pode variar sendo que o mais simples contém apenas três. A solução da Torre de Hanói (The Towers of Hanoi) pode ser feita recursivamente da seguinte forma: O caso base (parada da recursão) é quando n = 1. Se n = 1 nós podemos simplesmente mover o disco de A para B, sem precisar passar pelo pino C. Quando n > 1 nós podemos dividir o problema original em três sub-problemas e resolvê-los sequencialmente. 1) Mova os primeiros n - 1 discos de A para C com a ajuda do pino B; 2) Mova o disco n de A para B; 3) Mova n - 1 discos do pino C para o pino B com a ajuda do pino A. Além de resolver o problema, seu programa deverá informar quantas chamadas recursivas foram feitas. Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import java.util.Scanner; public class Estudos { static int quantChamadasRecursivas = 0; // registra as chamadas recursivas public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos ler a quantidade de discos a serem usados na simulação System.out.print("Informe a quantidade de discos: "); int discos = Integer.parseInt(entrada.nextLine()); // resolve o problema recusivamente System.out.println("\nOs movimentos para resolver o problema foram:\n"); moverDiscos(discos, 'A', 'B', 'C'); System.out.println("\nForam feitas " + quantChamadasRecursivas + " chamadas recursivas"); System.out.println(); } // método recursivo que resolve o problema da Torre de Hanói public static void moverDiscos(int n, char daTorre, char paraTorre, char torreAux) { quantChamadasRecursivas++; // registra mais uma chamada recursiva if(n == 1){ // condição de parada System.out.println("Movendo o disco " + n + " de " + daTorre + " para " + paraTorre); } else{ // faz mais uma chamada recursiva moverDiscos(n - 1, daTorre, torreAux, paraTorre); System.out.println("Movendo o disco " + n + " de " + daTorre + " para " + paraTorre); moverDiscos(n - 1, torreAux, paraTorre, daTorre); } } } |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como transformar um StringBuffer em uma String usando o método toString() da classe StringBufferQuantidade de visualizações: 105 vezes |
Como já vimos em dicas anteriores, um objeto da classe String é imutável, ou seja, quando modificamos o conteúdo de uma String, o interpretador cria um novo objeto, copiando o conteúdo da string anterior para o objeto recém-criado. Já a classe StringBuffer é mutável, ou seja, podemos modificar o seu conteúdo sem a necessidade da criação de um novo objeto. Você ficará surpreso ao saber que não podemos atribuir uma variável do tipo StringBuffer em uma variável do tipo String e vice-versa. Ao tentarmos fazer isso, os seguintes erros de compilação são exibidos: a) error: incompatible types: StringBuffer cannot be converted to String b) error: incompatible types: String cannot be converted to StringBuffer Assim, sempre que for necessário converter um StringBuffer em uma String, temos que usar o seu método toString(). Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; // Este exemplo mostra como converter um // StringBuffer em uma String public class Estudos{ public static void main(String[] args){ StringBuffer frase = new StringBuffer("Programação Java"); String resultado = frase.toString(); System.out.println(resultado); System.exit(0); } } |
Java ::: Classes e Componentes ::: JList |
Java Swing - Como obter o valor selecionado em um JList usando o método getSelectedValue()Quantidade de visualizações: 13118 vezes |
Nesta dica eu mostro como chamar o método getSelectedValue() de um controle JList para obter o valor do item selecionado na mesma. No exemplo nós exibimos o item selecionado em uma mensagem JOptionPane ao clicarmos em um botão JButton. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Estudos extends JFrame{ JList lista; public Estudos() { super("A classe JList"); Container c = getContentPane(); c.setLayout(new FlowLayout(FlowLayout.LEFT)); // Cria os itens da lista String nomes[] = {"Carlos", "Marcelo", "Fabiana", "Carolina", "Osmar"}; // Cria a JList lista = new JList(nomes); // Define a seleção única para a lista lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // Um botão que permite obter o valor do item selecionado JButton btn = new JButton("Obter valor selecionado"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ String valor = (String)(lista.getSelectedValue()); JOptionPane.showMessageDialog(null, "O valor selecionado é: " + valor); } } ); // Adiciona a lista à janela c.add(new JScrollPane(lista)); // Adiciona o botão à janela c.add(btn); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Ao executar esta aplicação Java Swing nós teremos o seguinte resultado: ![]() |
Java ::: Java Swing - Componentes Visuais ::: JList |
Como retornar os valores selecionados em uma JList de seleção múltipla do Java Swing usando o método getSelectedValues()Quantidade de visualizações: 9524 vezes |
Nesta dica mostrarei como podemos usar o método getSelectedValues() da classe JList do Java Swing para obter e retornar um vetor (array) contendo os valores selecionados em uma lista de múltipla seleção, ou seja, uma JList que permite a seleção de mais de um elemento por vez. O método getSelectedValues() retorna um vetor de Object. Note também o uso da constante ListSelectionModel.MULTIPLE_INTERVAL_SELECTION fornecida para o método setSelectionMode() para definir a forma de seleção da JList. Veja o código Java Swing completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Estudos extends JFrame{ JList lista; public Estudos() { super("A classe JList"); Container c = getContentPane(); c.setLayout(new FlowLayout(FlowLayout.LEFT)); // Cria os itens da lista String nomes[] = {"Carlos", "Marcelo", "Fabiana", "Carolina", "Osmar"}; // Cria a JList lista = new JList(nomes); // Define a seleção múltipla para a lista lista.setSelectionMode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); // Um botão que permite obter os valores selecionados JButton btn = new JButton("Obter valores selecionados"); btn.addActionListener( new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ Object[] valores = lista.getSelectedValues(); String res = "Valores selecionados:\n"; for(int i = 0; i < valores.length; i++) res += valores[i].toString() + "\n"; JOptionPane.showMessageDialog(null, res); } } ); // Adiciona a lista à janela c.add(new JScrollPane(lista)); // Adiciona o botão à janela c.add(btn); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Mais de um valor pode ser marcado na JList mantendo a tecla Ctrl ou Shift enquanto se clica nos valores desejados. |
Java ::: Dicas & Truques ::: Formatação de datas, strings e números |
Como usar o método System.out.printf() do Java para converter um valor na base decimal para hexadecimalQuantidade de visualizações: 10559 vezes |
Nesta dica mostrarei como podemos tirar proveito do método System.out.printf() do Java 5.0 em diante para converter um valor na base decimal para hexadecimal e exibí-lo na tela. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; public class Estudos{ public static void main(String[] args){ int num = 35; // exibe o valor na base hexadecimal System.out.printf("O decimal %d convertido para hexadecimal é %x", num, num); } } Ao executar este código nós teremos o seguinte resultado: O decimal 35 convertido para hexadecimal é 23 |
Java ::: Reflection (introspecção) e RTI (Runtime Type Information) ::: Passos Iniciais |
Java Reflection - Como exibir os nomes de todas as superclasses de uma determinada classe usando introspecção em JavaQuantidade de visualizações: 7864 vezes |
Nesta dica veremos como tirar proveito dos métodos getClass(), getName() e getSuperclass() da classe Class da linguagem Java para exibirmos todas as super classes de um determinada classe, até chegarmos à super classe mais alta na hierarquia, ou seja, a classe Object. Note como usamos um objeto da classe Stack para criarmos uma estrutura de dados do tipo pilha que nos permite obter os nomes das super classes e depois exibir os mesmos na ordem inversa. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import java.util.Stack; import javax.swing.*; public class Estudos{ // vamos precisar de uma pilha aqui static Stack<String> pilha = new Stack(); public static void main(String args[]){ // Exibe todas as superclasses de JPanel JPanel panel = new JPanel(); obterSuperclasses(panel); // agora vamos exibir os resultados na ordem // contrária que eles foram obtidos int cont = 0; while(pilha.size() > 0){ // insere espaços antes String ident = ""; for(int i = 0; i < cont; i++){ ident = ident + " "; } System.out.println(ident + pilha.pop()); cont++; } System.exit(0); } static void obterSuperclasses(Object obj){ // vamos adicionar este valor na pilha pilha.push(obj.getClass().getName()); Class cls = obj.getClass(); Class superclass = cls.getSuperclass(); while(superclass != null){ String className = superclass.getName(); // vamos adicionar este valor na pilha pilha.push(className); cls = superclass; superclass = cls.getSuperclass(); } } } Ao executarmos este código Java nós teremos o seguinte resultado: java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JPanel |
Vamos testar seus conhecimentos em |
Características do concreto armado No campo da engenharia, a reologia desempenha um papel crucial no estudo do comportamento de materiais, especialmente quando submetidos a forças ou tensões. Ela investiga como os materiais reagem a essas forças e como suas propriedades podem variar de acordo com fatores como taxa de deformação, temperatura e pressão. No contexto do concreto armado, um fenômeno reológico em particular ocorre quando a deformação do material aumenta com o tempo sob carregamento constante em comparação com a deformação inicial. Como esse fenômeno é classificado na reologia do concreto armado? A) Retração. B) Expansão. C) Fluência. D) Variação de temperatura. E) Deformações excessivas. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
No Brasil, a maioria da precipitação cai sob a forma de chuva, convencionalmente medida por meio de aparelhos denominados pluviômetros e/ou pluviógrafos. Qual o volume de água, em litros, coletado em uma área de 10000 cm2, após uma precipitação de 1,5 cm? A) 15000 litros. B) 1500 litros. C) 150 litros. D) 1,5 litros. E) 15 litros. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Analise o seguinte código JavaScriptvar a = (new Array(10)).toString(); Qual o valor da variável a após a execução desta linha de código? A) a string "10". B) um array de 10 strings vazias. C) a string ",,,,,,,,,". D) A instrução provoca um erro de execução. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Aglomerantes Você sabe que o gesso faz parte da família de aglomerantes simples. A obtenção do gesso se dá através: A) Calcinação do calcário dolomítico. B) Calcinação da gipsita natural. C) Isolamento das impurezas do sulfato biidratado de cálcio. D) Calcinação da sílica. E) Calcinação de carbonatos de cálcio e de magnésio. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fundações |
Fundações Ano: 2019 Banca: IBADE Órgão: Prefeitura de Jaru - RO Prova: IBADE - 2019 - Prefeitura de Jaru - RO - Engenheiro Civil Uma sondagem foi realizada segundo a norma ABNT NBR 6484:2001 (Solo - Sondagens de simples reconhecimento com SPT - Método de ensaio). Após a execução das 3 etapas previstas no ensaio, o seguinte resultado foi apresentado: 8/16 - 10/14 - 13/16 O índice de resistência à penetração (N) é: A) 18 B) 23 C) 31 D) 46 E) 54 Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
C - Como escrever uma função concat() que reproduz a funcionalidade da função strcat() da linguagem C Delphi - Como obter e exibir todos os itens selecionados em uma TListBox do Delphi de seleção múltipla |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |