Programação  
 
Conhecimento computador >> Programação >> Programação em Java >> 
JDBC ResultSet Exemplo
O Java Database Connectivity (JDBC ) Aplicação Programmer Interface ( API) fornece classes para conexão e acesso a dados tabulares , incluindo bancos de dados relacionais . A classe ResultSet fornece métodos para recuperar , navegação e manipulação de resultados de consulta de banco de dados . Exemplo Ambiente

Nos exemplos a seguir , você vai se conectar a um banco de dados chamado " pessoal ", uma única tabela dentro desse banco de dados chamado "povo" , contendo três colunas: " primeiro_nome ", " last_name " " , título, "e" salário ". Sua tabela contém os seguintes registros :

Bob , Smith , Clerk , 23.50Ted , Anderson, Designer , 38.00Fred , Johnson, Programador, 32.25Alice , Anderson , Engenheiro, 46.75Bob , Clark, Intern , 15.00Carol , Smith , Gerente, 42,50
consultar o banco de

criar uma conexão de banco de dados e criar um objeto Statement chamando createStatement do nosso objeto de conexão () função.

string url = " jdbc: mysql ://localhost /pessoal "; Connection conn = DriverManager.getConnection (url, "username" , "password" ); Declaração st = conn.createStatement ();

Criar uma string de consulta que contém uma instrução de consulta SQL válida

consulta string = "SELECT first_name , last_name de pessoas "; .

Crie um objeto ResultSet usando o objeto Statement para executar a consulta ao banco de dados .

ResultSet rs = st.executeQuery (query) ;

o objeto ResultSet , rs , agora contém os resultados da consulta : o " primeiro_nome " e colunas " last_name " para cada registro em tabela " pessoas " .
Acessando Resultados da Consulta

o objeto ResultSet tem um cursor , que inicialmente não aponta para qualquer registro. Chame a função de primeiro ResultSet () para mover o cursor para o primeiro registro realizado pelo objeto ResultSet. Funções get do ResultSet fornecer acesso ao conteúdo de cada coluna usando o nome da coluna da tabela do banco de dados. . " Last_name " Usar getString (String columnLabel ) para recuperar o conteúdo do VARCHAR colunas " prenome " e

rs.first (); seqüência fn = rs.getString ( " prenome "); Cordas ln = rs . getString ( " last_name "); System.out.println (ln + "," + fn );

A última linha acima impressões :

Smith, Bob

Chame última função do ResultSet () para mover o cursor para o último registro realizado pelo objeto ResultSet

rs.last (); . fn = rs.getString ( " prenome "); ln = rs.getString ( " last_name "); System.out.println (ln +", " + fn );

A última linha acima impressões :

Smith , Carol
Stepping através dos resultados da consulta

Normalmente, você deseja acessar todos os resultados retornados pela consulta. Próxima função do ResultSet ( ) move o cursor para a frente para o próximo registro. Quando o cursor é movido após o final do conjunto de resultados , a função next () retorna NULL, permitindo que você use o valor de retorno para escapar de um loop while

Statement st = conn.createStatement (). ; query string = "SELECT * FROM pessoas onde salário > 30 "; ResultSet rs = st.executeQuery (query) ;

while ( rs.next ()) {String fn = rs.getString ( " prenome " ); Cordas ln = rs.getString ( " last_name "); System.out.println (fn + "" + ln );}

os passos loop while através de cada registro no conjunto de resultados e impressões :

função anterior Ted AndersonFred JohnsonAlice AndersonCarol Smith

do ResultSet () move o cursor para trás um registro no conjunto de resultados e retorna NULL quando o cursor se moveu antes do primeiro registro . Isso permite que você ande para trás através do conjunto de resultados e use o valor de retorno da função anterior () para escapar de um loop while. Continuando o exemplo acima , o cursor foi deixado posicionado após o último registro no conjunto de resultados. Use a função anterior () andar para trás através dos resultados da consulta, a impressão do título e colunas de salários de cada registro. Use a função de ResultSet getFloat (String columnLabel ) para acessar o conteúdo da coluna FLOAT "salário " :

while ( rs.previous ()) {String t = rs.getString ( "title" ); int w = rs.getFloat ( "salário "); System.out.println (fn + "$" + ln );}

os passos loop while para trás através de cada registro no conjunto de resultados e impressões :

Gerente $ 42.50Engineer $ 46.75Programmer $ 32.25Designer $ 38,00
Random Access Navigation

ResultSet oferece funções para mover o cursor de forma arbitrária através dos registros em um conjunto de resultados. Recuperar todos os registros contidos pela tabela " pessoas " , classificado pela " last_name " depois " primeiro_nome " colunas :

Declaração st = conn.createStatement (); consulta String = "SELECT * FROM ordem pessoas por last_name , prenome "; ResultSet rs = st.executeQuery (query) ;

O conjunto de resultados contém :

Alice , Anderson , Engenheiro, 46.75Ted , Anderson, Designer , 38.00Bob , Clark, Intern , 15.00Fred , Johnson, programador, 32.25Bob , Smith, Clerk , 23.50Carol , Smith , Gerente, 42,50

Use a função absoluta (int linha) para definir o cursor para uma linha específica no conjunto de resultados . Um valor positivo para o parâmetro de linha irá mover o cursor para a frente de antes do início do conjunto de resultados. Um valor negativo para o parâmetro de linha irá mover o cursor para trás a partir do final do conjunto de resultados :

rs.absolute (3); seqüência fn = rs.getString ( " prenome "); corda ln = rs . getString ( " last_name "); System.out.println (fn + "" + ln );

rs.absolute (5); seqüência fn = rs.getString ( " prenome "); Cordas ln = rs . getString ( " last_name "); System.out.println (fn + "" + ln );

rs.absolute (-1) ; seqüência fn = rs.getString ( " prenome "); Cordas ln = rs.getString ( " last_name "); System.out.println (fn + "" + ln );

rs.absolute ( -3) ; seqüência fn = rs.getString ( " prenome "); Cordas ln = rs.getString ( " last_name "); System.out.println (fn + "" + ln );

As instruções de impressão acima de saída :

Bob ClarkBob SmithCarol SmithFred Johnson

Continuada , use relativa ( int linha) para mover o cursor para trás ou para a frente em relação à posição atual. O cursor foi deixado posicionado no quarto disco do conjunto de resultados . Mova-o para a frente duas fileiras, depois para trás quatro linhas :

rs.relative (2); fn = rs.getString ( " prenome "); ln = rs.getString ( " last_name "); System.out . println (fn + "" + ln );

rs.relative ( -4 ); fn = rs.getString ( " prenome "); ln = rs.getString ( " last_name "); System.out . println (fn + "" + ln );

as demonstrações de impressão na saída do código acima :

Carol SmithTed Anderson
Modificando os resultados

modificar o conteúdo de um conjunto de resultados usando as funções de atualização da ResultSet . Use updateString (String columnLabel , String x ) para alterar todos os registros correspondentes "Bob" na coluna " prenome " para " Robert ". Use a função beforeFirst () para redefinir o cursor para antes do início do conjunto de resultados para que você possa percorrer o resultado atualizada definir e imprimir os novos valores :

consulta String = "SELECT * FROM pessoas "; ResultSet rs = st.executeQuery (query) ;

while ( rs.next ()) {String fn = rs.getString ( " prenome "); if ( fn.equals ( "Bob" ) { rs.updateString ( " prenome ", " Robert" );}} rs.beforeFirst (); while ( rs.next ()) {String fn = rs.getString ( " prenome "); Cordas ln = rs.getString ( " last_name " ) ; System.out.println (fn + "" + ln );}

Os seguintes resultados são impressos :

Robert SmithTed AndersonFred JohnsonAlice AndersonRobert ClarkCarol Smith
Manipulando erros

Muitas das funções do ResultSet lançar uma SQLException . melhor prática dita erros lançados devem ser capturados e manipulados. mensagem de SQLException podem ser muito úteis na depuração de erros de conexão e consulta. Conter a sua conexão e código de consulta em blocos try-catch

try { string url = " jdbc: mysql ://localhost /pessoal "; . Connection conn = DriverManager.getConnection (url, "username" , "password" ); Declaração st = conn . createStatement ();

seqüência query = "SELECT first_name , last_name de pessoas "; ResultSet rs = st.executeQuery (query) ;

while ( rs.next ()) { fn Cordas = rs.getString ( " prenome "); Cordas ln = rs.getString ( " last_name "); System.out.println (fn + "" + ln );}} catch ( SQLException ex) { System.out.println ( ex.getMessage ()); . }
Clean Up

um objeto ResultSet é fechada automaticamente quando o objeto Statement usado para criá-la está perto quando fechado, um ResultSet objeto irá liberar automaticamente os recursos Forçar um objeto ResultSet para liberar todo o JDBC e recursos de banco de dados que manter chamando o próximo function () Feche o objeto ResultSet , rs , a partir dos exemplos acima : . .

rs.close ( );

Anterior :

Próximo : No
  Os artigos relacionados
·Como exibir um caractere como um Integer em Java 
·Como desenhar uma esfera em Java 
·Java Tutorial para Dividir Cordas 
·Como substituir caracteres especiais em uma Cadeia Java…
·Java Coding Standards 
·Como substituir 1.6 em Cadeia Java 
·Como instalar um jogo Android Através de um PC com APK…
·Como fazer upload de arquivos em massa em Java 
·Como instalar o Java 1.6 RPM no Fedora 
·Como inserir Java Faces como JSP Fragment 
  Artigos em destaque
·Ciência da Computação Tutorial 
·Como compilar o código D no Vim 
·Como editar um registro com Austrumi 
·Como criar gráficos no Visual C 
·Padrão Proxy Explicação 
·Noções básicas de Sistemas Embarcados em C 
·Como posso fazer um botão aparecer com base em element…
·Como escrever um arquivo de Marca 
·O que é um cabeçalho Ctype 
·Como ler entrada Java 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados