![]() |
![]() ![]() JDBC - Java Database Connectivity
![]() Por Arthur Silva Freire(arthur.freire@ccc.ufcg.edu.br)
Neste mês, a Coluna Java abordará uma API para acessar quaisquer dados em formato tabular que estejam armazenados em tabelas ou em arquivos. Nesta matéria, mostraremos como se conectar a um banco de dados e executar algumas instruções SQL via JDBC.
JDBC é uma API (Application Programming Interface) que torna fácil enviar instruções SQL (Structured Query Language) para os BD (Banco de Dados). Mas vai além disso, pois permite interagir com outras fontes de dados, como arquivos e fornece a interoperabilidade, ou seja, o mesmo programa escrito em Java pode acessar: Oracle, MySQL, PostgreSQL, etc. Algumas API, de mais alto nível que a JDBC, utilizam-na como base para fornecer seus serviços. Algumas delas são: SQLJ, JDO (Java Data Objects), EJB (Enterprise Java Beans), JPA (Java Persistence API) e OLAP4J. A seguir, algumas características de JDBC:
A seguir, veja um exemplo de como se conectar a um banco de dados utilizando JDBC. JDBCExemplo.javaimport java.sql.* public class JDBCExemplo { public static void main(String[] argv) { try { Class.forName("Driver"); } catch (ClassNotFoundException e) { System.out.println("Cadê seu driver JDBC? Inclua-o no seu library path"); e.printStackTrace(); return; } System.out.println("JDBC Driver Registrado!"); Connection connection = null; try { connection = DriverManager.getConnection("jdbc:meuDriver:meuDB", "login", "senha"); } catch (SQLException e) { System.out.println("A conexão falhou."); e.printStackTrace(); return; } if (connection != null) { System.out.println("Pronto, você está conectado. Tenha controle sobre sua base de dados."); } else { System.out.println("A conexão falhou."); } } }Agora que você já pode se comunicar com um banco de dados, veja um exemplo de criação e inserção de dados em uma tabela utilizando JDBC. CriandoTabelaInserindoDados.javaimport java.sql.* public class { public static void main(String[] argv) { try { Class.forName("Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); return; } Connection connection = null; try { connection = DriverManager.getConnection("jdbc:meuDriver:meuDB", "login", "senha"); } catch (SQLException e) { e.printStackTrace(); return; } if (connection != null) { // cria um statement na conexão aberta Statement stmt = connection.createStatement(); //Criando uma tabela stmt.executeUpdate( "CREATE TABLE Empregado(matricula int, nome varchar(20), endereco varchar(32), salario float)"); //Inserindo dados na tabela Empregado stmt.executeUpdate( "INSERT INTO Empregado values(1000, 'Biliu', 'Rua das Cruzetas, Cruzeiro, Brasil', 30.000)"); stmt.executeUpdate( "INSERT INTO Empregado values(1001, 'Zé', 'Rua das Flores, Jardim Paulistano, ', 31.000)"); stmt.executeUpdate( "INSERT INTO Empregado values(1002, 'Toin', 'Rua dos Carros, Liberdade, Brasil', 32.000)"); stmt.executeUpdate( "INSERT INTO Empregado values(1003, 'Tota', 'Rua Sem Nome, Velame, Brasil', 50.000)"); } else { System.out.println("A conexão falhou."); } } }Veja, a seguir, uma tabela contendo o mapeamento entre tipos SQL e tipos Java.
SelecionandoValores.javaimport java.sql.* public class SelecionandoValores { public static void main(String[] argv) { try { Class.forName("Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); return; } Connection connection = null; try { connection = DriverManager.getConnection("jdbc:meuDriver:meuDB", "login", "senha"); } catch (SQLException e) { e.printStackTrace(); return; } if (connection != null) { // cria um statement na conexão aberta Statement stmt = connection.createStatement(); //JDBC retorna resultados num objeto da classe ResultSet ResulSet rs = stmt.executeQuery("SELECT * FROM empregado"); //O método next() da classe ResultSet é usado para avançar o cursor para a próxima tupla no resultado: while (rs.next()) { int mat = rs.getInt("matricula"); String nome = rs.getString("nome"); String endereco = rs.getString("endereco"); float salario = rs.getFloat("salario"); System.out.println(mat + " - " + nome + " - " + endereco + " - " + salario); } //As referencias às colunas da tabela também podem ser feitas com os seus indices, ou seja: /*while (rs.next()) { int mat = rs.getInt("matricula"); String nome = rs.getString("nome"); String endereco = rs.getString("endereco"); float salario = rs.getFloat("salario"); System.out.println(mat + " - " + nome + " - " + endereco + " - " + salario); }*/ } else { System.out.println("A conexão falhou."); } } }A seguir, um exemplo mostrando como realizar updates nos dados da tabela. FazendoUpdate.javaimport java.sql.* public class FazendoUpdate { public static void main(String[] argv) { try { Class.forName("Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); return; } Connection connection = null; try { connection = DriverManager.getConnection("jdbc:meuDriver:meuDB", "login", "senha"); } catch (SQLException e) { e.printStackTrace(); return; } if (connection != null) { // cria um statement na conexão aberta Statement stmt = connection.createStatement(); String updateString = "Update Empregado set salario = salario * 1.1 where salario < 1000.00"; stmt.executeUpdate(updateString); //Verificando o update ResulSet rs = stmt.executeQuery("SELECT * FROM empregado"); while (rs.next()) { int mat = rs.getInt("matricula"); String nome = rs.getString("nome"); String endereco = rs.getString("endereco"); float salario = rs.getFloat("salario"); System.out.println(mat + " - " + nome + " - " + endereco + " - " + salario); } } else { System.out.println("A conexão falhou."); } } }Agora que você já foi apresentado ao JDBC, sinta-se à vontade para explorar a Documentação e realizar operações mais complexas. Jornal PETNews - Edição: Jeymisson Oliveira - Revisão: Iago Araújo e Joseana Fechine
Grupo PET Computação UFCG, 2012. All rights reserved. |
![]() |