Buscar

13 - Banco de Dados II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Orientada a Programação Orientada a 
ObjetosObjetos
Banco de Dados – II 
Consulta SQL
• Um comando de consulta SQL para uma matricula
específica é dado na forma abaixo.
SELECT * FROM TBAlunos WHERE matricula = 2010234
• Dentro do programa o comando SQL não poderá ter um
número de matricula constante. Precisará ser uma
variável para que várias matrículas possam servariável para que várias matrículas possam ser
consultadas. O comando fica na forma abaixo.
SELECT * FROM TBAlunos WHERE matricula = ?
• No formato acima o ? é uma variável que em tempo de
execução será substituida por valor específico para a
matricula a ser consultado.
• Cada variável recebe um número a partir de 1, da
esquerda para a direita.
Classes JDBC envolvidas
Connection
• Connection – esta classe é responsável em
estabelecer e manter uma conexão com o banco
de dados.
• No projeto de implementação a instanciação do
objeto da classe Connection é realizada pelaobjeto da classe Connection é realizada pela
classe FabricaConexao.
• O uso da classe FabricaConexao foi dado em
módulo anterior.
Classes JDBC envolvidas
PreparedStatement
• PreparedStatement (PS) – esta classe é responsável em
preparar um comando SQL a ser enviado ao banco de
dados/tabela.
• Um comando SQL com variável precisa ser preparado,
ou seja, complementado de forma que possa ser enviado
ao BD.
• Para instanciar um objeto da classe PreparedStatement
utilizaremos um objeto da classe Connection.
• O método prepareStatement é chamado a partir do
objeto da classe Connection para criar o objeto de PS.
• O método prepareStatement recebe como parâmetro a
String contendo o comando SQL e retorna um objeto da
classe PreparedStatement. Veja slide seguinte.
Consulta SQL
• Instanciação do objeto da classe PreparedStatement.
public Aluno consultarAluno(long matrAluno)throws Exception {
String consulta = “SELECT * FROM TBAlunos WHERE matricula = ?”;
Connection conexao = FabricaConexao.abreConexaoBD();
PreparedStatement comando = conexao.prepareStatement(consulta);
comando.setLong(1, matrAluno);
......
}
Classes JDBC envolvidas
PreparedStatement
• Preparar o comando SQL consiste em substituir a variável
do comando SQL por um valor específico.
• A substituição das variáveis por valores é realizada por
meio de métodos específicos de acordo com o tipo de dado
da variável a ser substituída.
• Métodos:
– setString – para atribuir uma valor para uma variável de– setString – para atribuir uma valor para uma variável de
tipo string.
– setInt – para tipo int.
– setLong – para tipo long.
– setDate – para um tipo da classe Date.
– Outros;
• Exemplo:
comando.setLong(1, matrAluno);
Classes JDBC envolvidas
PreparedStatement
• A classe PS disponibiliza o método executeQuery() para
o envio do comando SQL de consulta para execução no
servidor de banco de dados.
• A execução do método retorna um objeto que terá o
resultado da consulta feita ao banco de dados.resultado da consulta feita ao banco de dados.
• O objeto retornado é da classe ResultSet. A estrutura de
código é dada no slide seguinte.
Consulta SQL
• Preparação e execução do comando SELECT.
public Aluno consultarAluno(long matrAluno)throws Exception {
String consulta = “SELECT * FROM TBAlunos WHERE matricula = ?”;
Connection conexao = FabricaConexao.abreConexaoBD();
PreparedStatement comando = conexao.prepareStatement(consulta);
comando.setLong(1, matrAluno);
ResultSet retorno = comando.executeQuery();
20102040
ResultSet retorno = comando.executeQuery();
}
SELECT * FROM TBAlunos WHERE matricula = 20102040”;
• Instrução SQL após preparação
• Envio da instrução ao SGBD
ResultSet retorno = comando.executeQuery();
Consulta SQL
SELECT * FROM TBAlunos WHERE matricula = 20102040”;
• Instrução SQL após preparação
• Envio da instrução ao SGBD e retorno do SELECT
ResultSet retorno = comando.executeQuery();ResultSet retorno = comando.executeQuery();
SGBD
matricula nome email
201107123456 José Manoel jm@com
Classes JDBC envolvidas
ResultSet
• Representa o resultado de consulta (cursor)
• Permite percorrer o cursor (unidirecional e
seqüencial)
• Possibilita obter o valor das colunas, retornadas na
consulta
• Possibilita obter informações da tabela/visão em
tempo de execução (nome, tipo e propriedades das
colunas, nome da tabela, etc.)
Classes JDBC envolvidas
ResultSet
• verificar se existem mais registros para serem lidos,
com o método next()
• Dado um objeto (obj) da classe ResultSet, chamar o
método next() significa obter a próxima linha de
dados retornados na consulta.
boolean obj.next();boolean obj.next();
• No exemplo, o método irá retornar true se houver
dados a processar, false se não houver mais dados
• pode-se consultar os campos através de métodos
específicos, que mapeam o tipo SQL para o tipo
Java. Por exemplo, getString(campo) obtém um
campo do tipo string.
Classes JDBC envolvidas
ResultSet
matricula nome email
200010 Beth Cruz bc@com
20012040 José Manoel jm@com
200330 Eliz San es@com
• Dada a tabela abaixo - TBAlunos
• Admitindo que a consulta abaixo foi preparada e
executada, obtendo-se um objeto da classe ResultSet.
SELECT * FROM TBAlunos WHERE matricula = 200120
• Assumimos que o objeto criado seja o seguinte:
ResultSet retorno = comando.executeQuery();
• A consulta retornada será uma tabela com a estrutura
abaixo. Observe o cursor retorno, apontando para o inicio
da tabela.
Classes JDBC envolvidas
ResultSet
matricula nome email
20012040 José Manoel jm@com
retorno
• Uma chamada de execução ao método next(), ocasionará
um deslocamento no cursor para o primeiro conjunto dos
dados retornados.
retorno.next(); (irá retornar true)
matricula nome email
20012040 José Manoel jm@com
retorno
Classes JDBC envolvidas
ResultSet
• Uma outra chamada de execução ao método next(),
ocasionará um deslocamento no cursor para posição
após dados.
retorno.next(); (irá retornar false)
matricula nome email
20012040 José Manoel jm@comretorno
Final da consulta
• Para obter os dados obtidos na consulta para uso dentro
do programa, a classe ResultSet disponibiliza alguns
métodos:
– getString – para obter um dado de uma coluna do tipo string
– getInt – para obter um dado de uma coluna do tipo int
– getLong – para obter um dado do tipo long
Classes JDBC envolvidas
ResultSet
– getLong – para obter um dado do tipo long
• Os dados podem ser obtidos de acordo com o número da
coluna, iniciando em 1, ou por meio do nome da coluna.
matricula nome email
20012040 José Manoel jm@com
nome da coluna
número da coluna
conteúdo da coluna
321
Classes JDBC envolvidas
ResultSet
• Com o objeto retorno a obtenção dos dados da consulta
para variáveis (objetos) dentro do programa se dá nas
formas abaixo.
• Os dados obtidos são aqueles para onde o cursor está
apontando.
long numMatr = retorno.getLong(1);
String strNome = retorno.getString(“nome”);
String strEmail = retorno.getString(3);
matricula nome email
20012040 José Manoel jm@comretorno
Consulta SQL
• Processamento retorno do SELECT
public Aluno consultarAluno(long matrAluno)throws Exception {
... 
ResultSet retorno = comando.executeQuery();
objAluno
matricula=20102040
nome=“Jose Manuel”
email=“jj@com”
objeto retornado
if (retorno.next()) {
String vNome = retorno.getString(“nome”);
String vEmail = retorno.getString(“email”);
Aluno objAluno = new Aluno(matrAluno, vNome, vEmail);
return objAluno;
else
throw new Exception(“Matricula não localizada”); 
}
}
Dados retornados
pelo SELECT
Inclusão SQL
• Um comando de inclusão de dados de um aluno é dado
na forma abaixo.
INSERT INTO TBAlunos VALUES (2010234, ‘Jose Manuel’, 
‘jj@com’)
• Dentro do programa o comando SQL não poderá ter
valores constantes. Precisará ter variáveis para serem
preenchidas com os dados a serem gravados.preenchidas com os dados a serem gravados.
INSERT INTO TBAlunos VALUES (?, ?, ?)
• No formato acima temos 3 variáveis, a primeira da
esquerda é a 1, a do meio 2, e a última 3 .
• Cada variável deverá receber umvalor para que o
comando INSERT possa ser enviado ao banco de dados.
Inclusão SQL
public void incluirAluno (AlunoBean objAluno) throws Exception {
String insere = “INSERT INTO TBAlunos VALUES (?, ?, ?)”;
Connection conexao = FabricaConexao.abreConexaoBD();
PreparedStatement comando = conexao.prepareStatement(insere);
objAluno
matricula=20102040
nome=“Jose Manuel”
email=“jj@com”
comando.setLong(1, objAluno.getMatricula());
comando.setString(2, objAluno.getNome());
comando.setString(3, objAluno.getEmail());
comando.execute();
}

Continue navegando