Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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.
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
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")); }
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