Você está na página 1de 4

Manipulando Banco de Dados com Java

Um jeito simples de acessar uma Base de dados com o Java utilizando a linguagem SQL, mais para que isso se torne possvel devemos que algum que intermedeie esta ligao entre o Java e o banco. Esse intermediador conhecido como Driver, ele ser o responsvel pela conexo. O primeiro passo estabelecer uma conexo com banco de dados, para isso vamos utilizar os seguintes comandos: Importar os pacotes: import java.sql.*; Aqui estaro todos os pacotes contendo as classes necessrias para trabalhar com banco de dados. Dentro de um mtodo: Class.forName("com.mysql.jdbc.Driver"); Carrega o driver que ser usado na aplicao para realizar a conexo com o banco de dados.

Connection con; O objeto connection responsvel por armazenar os dados de conexo. Aps carregado ele assume a conexo com o banco de dados.

con = DriverManager.getConnection("jdbc:mysql://127.0.0.1/NomedaBase,Usuario,Senha); Carrega o objeto con com a conexo j estabelecida atravs do driver com o banco de dados. Os comandos acima devem estar inseridos dentro de um bloco try, pois eles podem gerar excees e devem ser tratadas.

Aps definimos a conexo podemos interagir com o banco de dados, existem vrios tipos interao: Interaes sem retorno o Insero o Atualizao o Excluso Interao com retorno o Consulta

Para cada tipo de interao citada acima iremos trabalhar de uma maneira diferente. Para manipular as bases de dados usaremos o objeto Statement ou PreparedStatement, ambos so executores de comandos SQL, porm possuem a seguinte diferena: Statement Executa comando SQL simples que no tenham ou tenham poucos parmetros a serem passados na consulta, por exemplo: Insert into Usuarios (Usuario) values ( + user+ ); Nesse caso temos somente um parmetro que o usurio a ser gravado na tabela Usuarios e est sendo representado pela varivel user. Professor Glauco | glauco.ferreira@etec.sp.gov.br

Delete * from Usuarios Nesse caso no possui nenhum parmetro.

PreparedStatement Possui a mesmo funcionalidade do Statement, porm com um diferencial, com ele possvel trabalhar com parmetros. muito utilizado em comados SQL que possuem grande nmero de parmetros, pois com ele possvel fazer a passagem desses valores de forma mais organizada. Exemplo: "insert tb_usuarios(usuario,senha) values (?,?)" Reparem que no lugar dos valores foram inseridas ?, isso quer dizes que foram reservados espaos para os valores possam ser passados posteriormente.

Como que funciona?


Cada ? se torna uma lacuna com um determinado endereo, este endereo um nmero que atribudo as ? na ordem que so digitados. No caso acima o primeira ? referente ao nome do usurio tem o endereo 1 e a segunda ? referente a senha tem o endereo 2, so esses endereos que sero utilizados para passar os valores.

Criando interaes sem retorno.


A regra sempre ser a mesma tanto para inserir, alterar e excluir dados de uma base. Devemos seguir os seguintes passos: Vamos criar nosso comando SQL: String SQL = "insert tb_usuarios(usuario,senha) values (?,?)";

Na sequncia vamos criar um Objeto PreparedStatement que ser preenchido com uma PreparedStatement, da conexo que havamos criando anteriormente, j com a instruo SQL da varivel String que havamos criado: PreparedStatement cmd = con.prepareStatement(SQL);

Agora vamos passar os valores que iro substituir as ? que foram inseridas no comando SQL. cmd.setString(1, Usuario); cmd.setString(2,Senha);

Para finalizar iremos chamar o mtodo executeUpdate que ir executar o comando SQL: cmd.executeUpdate();Este mtodo sempre ser utilizado para os comandos Insert, Update e Delete. Por fim, iremos fechar o PreparedStatement e o Connection: cmd.close(); con.close(); Professor Glauco | glauco.ferreira@etec.sp.gov.br

Interaes com Retorno de dados.


Para criar consultas utilizando o clusula SELECT, o princpio ser o mesmo do visto anteriormente, porm agora teremos a presena de um novo objeto, o ResultSet, ele ser responsvel por armazenar os dados resultantes da consulta. O ResultSet possui a mesmo estrutura de uma matriz, ele formado de linhas e colunas que servem para armazenar os valores obtidos pelo comando SQL. Para criar uma consulta devemos seguir os seguintes passos: Vamos criar um Statement e preenche-lo com Statement da conexo para que possamos executar o comando SQL: Statement cmd = con.createStatement(); Vamos criar uma consulta SQL: String SQL = "select ID, Usuario from tb_usuarios";

Agora vamos executar com o Mtodo executeQuery e armazenar o resultado em um ResultSet: ResultSet rs =cmd.executeQuery(SQL);

Pronto, os dados esto armazenados dentro do ResultSet. Agora teremos que pegar esses valores. Para pegar os valores do ResultSet devemos seguir os seguintes passos:

O mtodo next utilizado para varrer os resultados, ele avana uma linha a cada vez que ele chamado quando no h mais linhas ele retorna false. Por isso utilizaremos o while, para pegar os resultados de cada linha at que no haja mais linhas. while(rs.next()){

O mtodo getString trar o valor referente a uma determinada coluna e na linha em que o while se encontra, no caso temos suas colunas ID e Usuario: System.out.println(rs.getString("ID") + ------> rs.getString("Usuario")); }

Professor Glauco | glauco.ferreira@etec.sp.gov.br

Questes 123456789O que um Driver e qual a finalidade de usarmos o Class.forName para chama-lo? O que faz a classe Connection? Por que devemos usar import java.sql.*;? O que faz o comando DriverManager.getConnection? Qual as funes do Statement e o PreparedStatement? Descreva as suas diferenas. Qual a diferena entre os mtodos executeUpdate() e executeQuery() da classe Statement? O que um ResultSet? Como o ResulSet trabalha? Como obter os dados de um ResultSet

Professor Glauco | glauco.ferreira@etec.sp.gov.br