É permitido manipular um resultado de uma pesquisa no banco de dados através do seu código Java usando um objeto ResultSet, você pode selecionar qualquer campo contido em uma ou mais linhas de dados à partir do conteúdo de seu set de dados e escolher as colunas desejadas pelo nome ou índice, você pode exibi-las em uma grade ou em campos de edição.
Para utilizar uma linha de dados por coluna em Java nos bancos de dados Oracle, DB2 e MSSQL, siga os seguintes passos:
1 – Crie a tabela de exemplo e insira as linhas de dados com o script para o seu banco de dados que você encontra logo abaixo:
Exemplo:
Este programa foi escrito para retornar uma linha de dados em uma tabela e exibir os campos em caixas de textos.
SQL
Oracle
create table Funcionarios ( ID_Funcionario NUMBER(5), Nome VARCHAR2(30), Sobrenome VARCHAR2(70), Cargo VARCHAR2(30), Salario NUMBER(9,2) ); Insert into FUNCIONARIOS values (1,'Steve','Gates','Programador',2550.56); Insert into FUNCIONARIOS values (2,'Bill','Jobs','Diretor',5143.71);
DB2
create table Funcionarios ( ID_Funcionario INTEGER, Nome VARCHAR(30), Sobrenome VARCHAR(70), Cargo VARCHAR(30), Salario NUMERIC(9,2) ); Insert into FUNCIONARIOS values (1,'Steve','Gates','Programador',2550.56); Insert into FUNCIONARIOS values (2,'Bill','Jobs','Diretor',5143.71);
Mssql
create table Funcionarios ( ID_Funcionario Int, Nome VARCHAR(30), Sobrenome VARCHAR(70), Cargo VARCHAR(30), Salario Decimal(9,2) ); Insert into FUNCIONARIOS values (1,'Steve','Gates','Programador',2550.56); Insert into FUNCIONARIOS values (2,'Bill','Jobs','Diretor',5143.71);
Java
import java.awt.BorderLayout; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.Border; import javax.swing.border.EtchedBorder; public class Campos implements ActionListener { // Declara componentes private JLabel ltitulo; private JLabel lid; private JLabel lpnome; private JLabel lsnome; private JLabel lcargo; private JLabel lsalario; private JLabel lpesquisa; private JTextField tid; private JTextField tpnome; private JTextField tsnome; private JTextField tcargo; private JTextField tsalario; private JTextField tpesquisa; private JButton botao; private Border borda; // Declara objetos de conexão private static Connection conn; private static Statement query; // Declara variaveis private String bconexao; // Cria conexão public void conectar(String banco) { // Verifica strings de conexão // ORACLE if (banco == "oracle") { try { // Define Driver de conexão JDBC thin Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe", "user", "p@55w0rd"); // Executa pedido SQL query = conn.createStatement(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } } // DB2 if (banco == "db2") { try { // Define Driver de conexão JDBC Class.forName("com.ibm.db2.jcc.DB2Driver"); conn = DriverManager.getConnection( "jdbc:derby:net://localhost:50000/deva", "db2admin", "p@55w0rd"); // Executa pedido SQL query = conn.createStatement(); // JOptionPane.showMessageDialog(menssagem, // "Conexão Efetuada com sucesso!"); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { // JOptionPane.showMessageDialog(menssagem, "Erro na conexão!"); ex.printStackTrace(); } } // MICROSOFT SQL SERVER if (banco == "mssql") { try { // Define Driver de conexão JDBC String URL = "jdbc:sqlserver://localhost\\SQLEXPRESS:1433;databaseName=devaberto" + ";user=user;password=p@55w0rd"; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); conn = DriverManager.getConnection(URL); // Executa pedido SQL query = conn.createStatement(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (SQLException ex) { ex.printStackTrace(); } } } // Retorna funcionario public ResultSet retornaFuncionarioId(String codigo) throws SQLException { // Cria uma nova conexão Statement query; query = conn.createStatement(); String sql; // Verfica banco de dados e passa script SQL sql = "Select * From FUNCIONARIOS Where ID_FUNCIONARIO = " + codigo; // Executa Script ResultSet dados = query.executeQuery(sql); // Retorna set de dados return dados; } public Container criaPainel() { // cria painel JPanel painel = new JPanel(); painel.setLayout(new BorderLayout()); painel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); // Cria titulo ltitulo = new JLabel("Database - Fields -Sem conexão"); painel.add(ltitulo, BorderLayout.PAGE_START); // Cria painel de usuario JPanel painelDados = new JPanel(new GridLayout(0, 2, 10, 10)); // Cria componentes lid = new JLabel("Código:"); lpnome = new JLabel("Primeiro Nome:"); lsnome = new JLabel("Sobrenome:"); lcargo = new JLabel("Cargo:"); lsalario = new JLabel("Salário:"); tid = new JTextField(); tpnome = new JTextField(); tsnome = new JTextField(); tcargo = new JTextField(); tsalario = new JTextField(); // Adiciona componentes no painel painelDados.add(Box.createVerticalStrut(10)); painelDados.add(Box.createVerticalStrut(10)); painelDados.add(lid); painelDados.add(tid); painelDados.add(lpnome); painelDados.add(tpnome); painelDados.add(lsnome); painelDados.add(tsnome); painelDados.add(lcargo); painelDados.add(tcargo); painelDados.add(lsalario); painelDados.add(tsalario); painelDados.add(Box.createVerticalStrut(10)); painelDados.add(Box.createVerticalStrut(10)); painel.add(painelDados, BorderLayout.CENTER); // Cria painel de pesquisa JPanel painelPesquisa = new JPanel(new GridLayout(0, 3, 10, 10)); borda = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED); painelPesquisa.setBorder(borda); // Cria pesquisas lpesquisa = new JLabel("Pesquisa código:"); tpesquisa = new JTextField(); botao = new JButton("Pesquisar"); botao.addActionListener(this); // Define foco do cursor no campo de pesquisa javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { tpesquisa.requestFocus(); } }); // Adiciona compoentes ao painel de pesquisa painelPesquisa.add(lpesquisa); painelPesquisa.add(tpesquisa); painelPesquisa.add(botao); painel.add(painelPesquisa, BorderLayout.PAGE_END); return painel; } // Clique do botão de pesquisa public void actionPerformed(ActionEvent arg0) { // Cria instancia de objeto Campos campos = new Campos(); // conecta ao banco de dados defindo // mude a variavel bconexao para escolher o banco de dados // importe os drivers para o projeto // oracle = ORACLE // db2 = IBM DB2 // mssql = MSSQL Server bconexao = "oracle"; campos.conectar(bconexao); // retorna result de dados try { ResultSet dados = campos.retornaFuncionarioId(tpesquisa.getText()); ltitulo.setText("Database - Fields - " + bconexao); // Preenche campos da tela while (dados.next()) { tid.setText(dados.getString("ID_FUNCIONARIO")); tpnome.setText(dados.getString("NOME")); tsnome.setText(dados.getString("SOBRENOME")); tcargo.setText(dados.getString("CARGO")); tsalario.setText(dados.getString("SALARIO")); } } catch (SQLException e) { e.printStackTrace(); } } public static void criaGUI() { // Cria formulario JFrame formulario = new JFrame("Desenvolvimento Aberto"); formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // cria painel de conteudo Campos acesso = new Campos(); formulario.setContentPane(acesso.criaPainel()); // Exibe o formulario formulario.pack(); formulario.setVisible(true); } public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // Mostra GUI criaGUI(); } }); } }