Ola galera, bom eu estou fazendo um cadastro simples no banco de dados, e gostaria de saber como ler esses cadastros no Banco, eu estava lendo sobre resultset mas nao entendi muito bem, gostaria de saber se tem como alguem me ajudar a ler os dados com base no que eu tenho:
packagecom.squadra.caixa.persistencia.entidade;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;publicclassBancoDeDadosextendsThread{Connectionconn;Statementstatement;List<Cliente>listaClientes=newArrayList<Cliente>();publicBancoDeDados(List<Cliente>listaClientes){this.listaClientes=listaClientes;}publicvoidrun(){gravarCliente();}publicvoidgravarCliente(){Stringusuario="root";Stringsenha="palitodedente";Stringurl="jdbc:mysql://localhost:3306/javaprogrammer";try{Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection(url,usuario,senha);statement=conn.createStatement();for(inti=0;i<this.listaClientes.size();i++){Stringsql="insert into cliente(nome, cpf)"+"values ('"+this.listaClientes.get(i).getNome()+"', '"+this.listaClientes.get(i).getCpf()+"')";statement.executeUpdate(sql);System.out.println(this.listaClientes.get(i).getNome()+" "+this.listaClientes.get(i).getCpf());}statement.close();conn.close();}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}}}
Everton é bom voce ter uma classe para controlar somente isto, conexão com banco, desconectar e consultas sql para armazenar no result set, ae nesta classe é só voce ter um metodo para fazer a consulta sql e armazenar no result set. Veja:
publicvoidexecuteSql(Stringsql){try{statement=conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);resultSet=statement.executeQuery(sql);}catch(SQLExceptionsqlErro){JOptionPane.showMessageDialog(null,"Verifique se informou o dado correto para pesquisa."+sqlErro);}}
Uma vez a consulta armazenada no result set voce pode recupera-las.
try{
while(banco.resultSet.next()){
System.out.println("O numero da conta é :"+banco.resultSet.getString("NumeroConta")); }
}catch(SQLExceptionerro){
JOptionPane.showMessageDialog(null,"NÃO foi possivel conectar ao banco de dados");}
}
Espero ter ajudado
evertonsilvagomesjav
galera to perdidao tentei fazer com base no que vcs me passaram mas ta dando erro
ublicvoidexibirCliente(){Stringusuario="root";Stringsenha="palitodedente";Stringurl="jdbc:mysql://localhost:3306/javaprogrammer";java.sql.ResultSetrs=null;try{Class.forName("com.mysql.jdbc.Driver");Connectionconn=DriverManager.getConnection(url,usuario,senha);Statementstatement=conn.createStatement();while(rs.next()){rs=statement.executeQuery("SELECT nome FROM cliente");Stringnome=rs.getString("nome");System.out.println(nome);}statement.close();conn.close();}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}}
evertonsilvagomesjav
o erro e um NullPointerException:
Exception in thread "main" java.lang.NullPointerException
at com.squadra.caixa.persistencia.entidade.ResultSetBancoDeDados.exibirCliente(ResultSetBancoDeDados.java:22)
at com.squadra.caixa.persistencia.entidade.Banco.leBancoDeDados(Banco.java:288)
at com.squadra.caixa.persistencia.principal.Principal.main(Principal.java:150)
pedroroxd
Um exemplo simples pra você:
importjava.sql.*;publicclassConectaBanco{publicConnectionconecta()throwsClassNotFoundException,SQLException{Connectionconnection=null;StringdriverName="org.gjt.mm.mysql.Driver";Class.forName(driverName);Stringurl="jdbc:mysql://"+"localhost"+":3306/"+"restaurante";//restaurante é a tabelaconnection=DriverManager.getConnection(url,"root","admin");//root = usuario e admin = senhareturnconnection;//retorna conexão para você poder utilizar para incluir ou excluir linhas}}
evertonsilvagomesjav
isso ai ta ok pedro quero. O problema e o resultset
pedroroxd
Tenho um exemplo de web aqui também…
Não muda muita coisa não, só as linhas 10 e 13…
Qualqr coisa pede ae…
Espero ter ajudado…
Se resolveu acrescente [RESOLVIDO] no assunto do tópico.
[]'s
pedroroxd
Nesse código você passa a conexão (que foi pegada na classe ConectaBanco no meu caso) e uma Defaut Table Model…
Então ele completa a tabela
publicvoidcriatabelao(Connectionconnection,javax.swing.table.DefaultTableModelmodelo)throwsSQLException,ClassNotFoundException{Statementstmt=connection.createStatement();Stringsql2="Select * from cliente order by nome";ResultSetrs=stmt.executeQuery(sql2);while(rs.next()){String[]dados=newString[4];dados[0]=rs.getString("Id");//id=nome da colunadados[1]=rs.getString("Nome");dados[2]=rs.getString("Cpf");dados[3]=rs.getString("Endereço");modelo.addRow(dados);//adiciona uma nova linha na JTable;}}
evertonsilvagomesjav
Olha como ta meu cod:
publicvoidexibirCliente(){Stringusuario="root";Stringsenha="palitodedente";Stringurl="jdbc:mysql://localhost:3306/javaprogrammer";ResultSetrs=null;Stringnome=null;StringdriverName="com.mysql.jdbc.Driver";inti=0;try{Class.forName(driverName);Connectionconn=DriverManager.getConnection(url,usuario,senha);Statementstatement=conn.createStatement();while(rs.next()){Stringsql="SELECT nome FROM cliente;";rs=(ResultSet)statement.executeQuery(sql);Stringdados[]=rs.getString("nome");// aqui eu quero que todos nomes da coluna nome vao para o array para ser exibido depois mais nao sei como =/}statement.close();conn.close();}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}
kenzard
Everton é o seguinte.
Import desta maneira as bibliotecas
import java.sql.*;
Na hora de declarar a variavel resultset não coloque ela como null, declare desta maneira
Statement statement;
ResultSet resultSet;
Depois faz desta maneira:
try{Class.forName("com.mysql.jdbc.Driver");Connectionconn=DriverManager.getConnection(url,usuario,senha);statement=conexao.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);while(rs.next()){rs=statement.executeQuery("SELECT nome FROM cliente");Stringnome=rs.getString("nome");System.out.println(nome);}}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}
evertonsilvagomesjav
Esta dando erro dentro do while na variavel rs pedindo pra inicializar ela, mas se eu inicializo ela como null da nullpointerexception.
publicvoidexibirCliente(){Stringusuario="root";Stringsenha="palitodedente";Stringurl="jdbc:mysql://localhost:3306/javaprogrammer";ResultSetrs;Stringnome=null;StringdriverName="com.mysql.jdbc.Driver";inti=0;try{Class.forName(driverName);Connectionconn=DriverManager.getConnection(url,usuario,senha);Statementstatement=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);while(rs.next()){// erro aqui pedindo pra inicializar a variavel.Stringsql="SELECT nome FROM cliente;";rs=statement.executeQuery(sql);nome=rs.getString("nome");}statement.close();conn.close();}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}}
KENZAR ou alguem que conheça tem como por favor me explicar o que essa linha de comando faz?
publicvoidexibirCliente(){Stringusuario="root";Stringsenha="palitodedente";Stringurl="jdbc:mysql://localhost:3306/javaprogrammer";ResultSetrs=null;Stringnome=null;StringdriverName="com.mysql.jdbc.Driver";inti=0;try{Class.forName(driverName);Connectionconn=DriverManager.getConnection(url,usuario,senha);Statementstatement=conn.createStatement();rs=statement.executeQuery("SELECT nome FROM cliente");Stringdados="";while(rs.next()){dados=dados+rs.getString("nome")+"\n";}javax.swing.JOptionPane.showMessageDialog(null,dados,"DADOS",javax.swing.JOptionPane.PLAIN_MESSAGE);//exibe a sua pesquisa em um JOptionPanestatement.close();conn.close();}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}
Té mais
M
M112
Não me lembro se foi assim que eu fiz o codigo na primeira vez que tentei…
Mas se der erro posta ai… :lol:
evertonsilvagomesjav
maaac brigadao cara pela ajuda ta lendo, mas deixa eu perguntar uma coisa, o codigo desta maneira ele exibi pra mim a cada iteraçao um nome certo?
publicvoidexibirCliente(){Stringusuario="root";Stringsenha="palitodedente";Stringurl="jdbc:mysql://localhost:3306/javaprogrammer";ResultSetrs=null;Stringnome="";StringdriverName="com.mysql.jdbc.Driver";inti=0;try{Class.forName(driverName);Connectionconn=DriverManager.getConnection(url,usuario,senha);Statementstatement=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);Stringsql="SELECT nome FROM cliente;";rs=statement.executeQuery(sql);while(rs.next()){nome=rs.getString("nome");JOptionPane.showMessageDialog(null,nome);//AQUI ESTA LENDO CADA HORA UM NOME CORRETO?}statement.close();conn.close();}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}}
DESTA FORMA EXIBINDO FORA DO WHILE ELE ME TRAZ SOMENTE O ULTIMO NOME DO BANCO CERTO?
publicvoidexibirCliente(){Stringusuario="root";Stringsenha="palitodedente";Stringurl="jdbc:mysql://localhost:3306/javaprogrammer";ResultSetrs=null;Stringnome="";StringdriverName="com.mysql.jdbc.Driver";inti=0;try{Class.forName(driverName);Connectionconn=DriverManager.getConnection(url,usuario,senha);Statementstatement=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);Stringsql="SELECT nome FROM cliente;";rs=statement.executeQuery(sql);while(rs.next()){nome=rs.getString("nome");}JOptionPane.showMessageDialog(null,nome);// DESTA FORMA ELE IRA ME EXIBIR SOMENTE O ULTIMO CADASTRO CERTO?statement.close();conn.close();}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}}
so tira essa minha duvida por favor.
M
M112
É isso ai cara…
E se você quiser que ele exiba todos os dados de uma vez já no primeiro JOptionPane basta fazer assim:
publicvoidexibirCliente(){Stringusuario="root";Stringsenha="palitodedente";Stringurl="jdbc:mysql://localhost:3306/javaprogrammer";ResultSetrs=null;Stringnome="";StringdriverName="com.mysql.jdbc.Driver";inti=0;try{Class.forName(driverName);Connectionconn=DriverManager.getConnection(url,usuario,senha);Statementstatement=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);Stringsql="SELECT nome FROM cliente;";rs=statement.executeQuery(sql);while(rs.next()){nome=nome+rs.getString("nome")+"\n";//AQUI ELE SALVA UM DADO NA STRING... E SE EXISTIR MAIS UM DADO NO BD... ELE PULA UMA LINHA E SALVA NA LINHA DE BAIXO...}JOptionPane.showMessageDialog(null,nome);//AI QUANDO VC EXIBIR O JOptionPane... ELE NÃO EXIBE MAIS SOMENTE O ULTIMO VALOR... E SIM TODOS OS DADOS DO BD DE UMA VEZ :Dstatement.close();conn.close();}catch(ClassNotFoundExceptione){e.printStackTrace();}catch(SQLExceptione){e.printStackTrace();}}
O problema de fazer assim é que se você possuir um BD muito grande… provavelmente o seu JOptionPane não vai caber na tela
Ai vc teria que usar uma JTable…
Té mais cara!!! Boa sorte com os estudos
evertonsilvagomesjav
Pô mac muitooooo obrigado mesmo cara pela ajuda!!!
M
M112
Por nada evertonsilvagomesjava… No que nós pudermos ajudar… estamos ai…
Té mais…