Banco de Dados Um banco de dados é um conjunto de informações organizadas de forma regular em tabelas semelhantes a matrizes de duas dimensões que contém linhas e colunas (Estilo planilha do Microsoft Excel. As informações dessas linhas e colunas têm a característica comum de servirem a uma mesma finalidade. Por exemplo a tabela chamadas Alunos poderia conter três colunas de dados: Nome Turma Disciplina Luizinho 4º SI Progr. Java Huguinho 3º SI Progr. Java Zezinho 4º SI Asp.Net O banco de dados é a tabela ou conjunto de tabelas que contém os dados. Existem 3 definições que são relevantes de serem citadas aqui a respeito do termo banco de dados: Banco de dados: É a coleção dos dados relacionados e as relações que os suportam. Aplicativo de banco de dados: É o software usado para acessar esses dados, tal como Oracle, Sybase, MySql, PostgreSQL, SQL Server e outros. Servidor de banco de dados: é o computador no qual o aplicativo de banco de dados está rodando. 1/28
2/28
3/28
4/28
5/28
12.1. O que é SQL? As últimas versões do padrão SQL são na maioria dos SGBD s a SQL-ANSI-92 também conhecida como SQL/92 ou apenas SQL2 e alguns já implementam a SQL/93 conhecida como SQL3 que traz recursos de banco de dados orientados a objetos. 12.2. O que é JDBC? JDBC é a biblioteca de classes de Java para acesso a banco de dados. Ela possui um conjunto de interfaces que criam um ambiente comum em que as aplicações e os mecanismos de banco de dados se comunicam. JDBC/ODBC 6/28
O acesso de um programa Java a um banco de dados se dá pela classe DriveManager que pertence ao pacote java.sql e que seleciona o driver apropriado para o banco de dados particular que está em uso. DriverManager A classe DriverManager vai tentar estabelecer uma ligação com o banco de dados pelo método getconnection() mostrado a seguir: String Url = "jdbc:odbc:estoque"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection Conexao = DriverManager.getConnection(Url); Na string Url está definindo o nome do driver do banco de dados e o nome do banco que será usado pelo método getconnection() da classe DriverManager. O método forname() da classe Class retorna o driver JDBC:ODBC que será usado e desta forma fica estabelecida a ligação entre o programa e o banco de dados. Nesta operação pode ocorrer erros por estar envolvendo dois softwares diferentes, então deve se usar um laço Try-catch para exceções de dois tipos: ClassNotFoundException quando o sistema não consegue localizar o driver indicado. SQLException quando o driver foi achado, mas o banco retorna algum tipo de erro. 12.3 Uma primeira ligação. Como criar fontes de dados ODBC. 7/28
8/28
9/28
10/28
Fazendo uma ligação com o banco de dados estoque. import java.sql.*; import javax.swing.*; public class Exemplo12_1 { public static void main ( String arg[]) { String Url = "jdbc:odbc:estoque"; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection Conexao = DriverManager.getConnection(Url); JOptionPane.showMessageDialog(null,"Conexão estabelecida \ncom o banco de dados \n Estoque.mdb\ne...encerrada!","mensagem",1); Conexao.close(); System.exit(0); catch(classnotfoundexception e) { JOptionPane.showMessageDialog(null,"Driver JDBC-ODBC não encontrado ","Mensagem",1); System.exit(0); catch(sqlexception e) { JOptionPane.showMessageDialog(null, "Problemas na conexão com a fonte dos dados","mensagem",1); System.exit(0); 11/28
12.4 A linguagem SQL Os comandos SQL se dividem em dois grupos: DDL que é uma abreviação de Data Definition Language Estes comandos interferem na estrutura do banco de dados, por exemplo criando tabelas, excluindo ou alterando suas estruturas. DML que é a sigla de Data Manipulation Language São comandos que alteram os dados dentro das tabelas do banco, podendo alterar, inserir, ou apagar seus valores sem alterar a estrutura do banco de dados. 12.4.1 Comandos DDL CREATE DATABASE Cria um banco de dados com o nome especificado: CREATE DATABASE Estoque; CREATE TABLE Exemplo CREATE TABLE produtos ( Numérico int primary key, Código varchar(5), Produto varchar (50), Preço float ); 12/28
ALTER TABLE DROP TABLE DROP DATABASE Elimina o banco de dados inteiro. DROP DATABASE Estoque; 13/28
12.6 Comandos de ação e de navegação A navegação pelos registros da tabela pode ser definida pelas formas sobrecarregadas do método createstatement(). Sem nenhum parâmetro definido a navegação somente pode ser realizada no sentido para frente ( do primeiro ao último registro). Mas o método também pode ser definido como: CreateStatement( Navegação, Ação ) sendo que: 14/28
Capturar valores de acordo com o tipo de dado das colunas da tabela. Para realizar a captura de valores das colunas da tabela do tipo texto foi muito utilizado o tipo getstring(campo): String B = rs.getstring( codigo ); Porém se na tabela existirem valores definidos de outra forma, então existem diversos métodos de ResultSet disponíveis para realizar essa captura de valores tais como: getdate() getfloat() getdouble() getfloat() getbyte() getboolean() e outros. 15/28
12.7. Bancos de dados no Linux Conforme já foi falado a linguagem Java e multiplataforma. A JDBC é uma API que possui recursos para tornar o acesso a esses sistemas independente do próprio software gerenciador de banco de dados. Podendo trabalhar com MySQL, PostgreeSql e muitos outros. A questão é conseguir um driver JDBC para o banco de dados que estiver disponível em sua distribuição. 16/28
12.8. O driver Connector Acesse o endereço para obter o driver connector java para my sql: http://dev.mysql.com/downloads/connector/j/5.1.html 17/28
Extrair a pasta para C:\Arquivos de programas\java\jdk1.6.0_06\jre\lib\ext Ou C:\Program Files\Java\jdk1.6.0_11\jre\lib\ext dependendo da versão. Depois de extraído tem que ficar assim: C:\Arquivos de programas\java\jdk1.6.0_06\jre\lib\ext\ mysqlconnector-java-5.1.6-bin.jar 18/28
19/28
20/28
21/28
22/28
23/28
24/28
Exemplo Conexão com o banco de dados Iniciar.java 25/28
Criando a classe conexão Conexao.java Verificando a classe Conexao Iniciar.java 26/28
Exemplo de conexão com a base de dados Access. package CadastroClientes; import java.net.url; import java.sql.*; public class MyConnection { public static Connection getconnection() throws Exception { Driver d = (Driver)Class.forName ("sun.jdbc.odbc.jdbcodbcdriver").newinstance(); Connection c = DriverManager.getConnection ("jdbc:odbc:driver={microsoft Access Driver (*.mdb);dbq=d:/work/know_new/java/curso_bkp/j2se1/cadastroclientes/ca dastro.mdb"); return c; /* To use an already defined ODBC Datasource : "pwd"); String URL = "jdbc:odbc:mydsn"; Connection c = DriverManager.getConnection(URL, "user", */ package CadastroClientes; import java.net.url; import java.sql.*; public class JDBCapp { static Connection theconn; public static void main (String args[]) { try { // connection to an ACCESS MDB theconn = MyConnection.getConnection(); ResultSet rs; Statement stmt; String sql; sql = "SELECT nome, endereco FROM cliente;"; stmt = theconn.createstatement(); rs = stmt.executequery(sql); while (rs.next()) { System.out.println(rs.getString("nome")); System.out.println(rs.getString("endereco")); rs.close(); stmt.close(); catch (Exception e) { e.printstacktrace(); finally { try { if (theconn!= null) theconn.close(); 27/28
catch (Exception e) { 28/28