Tenho uma aplicação e quero fazer o seguinte ela vai no banco faz um select com order by e pega o ultimo id, soma +1 desse numero e retorna para um jtextfield, fiz o código abaixo mas não esta funcionando nem dando erro alguem poderia me ajudar?!?!?
Segue o código:
publicvoidcarregaCodigoOs(){Connectionconn=newconeccao().conectar();ResultSetrs=null;try{// Cria e executa uma instru��o SQLMeuState=conn.createStatement();}catch(SQLExceptionex){ex.printStackTrace();JOptionPane.showMessageDialog(null,"erro de STATEMENT");}try{rs=MeuState.executeQuery("");while(rs.next()){rs.last();intCod=rs.getInt("idOrdem");Cod=Cod+1;StringCodS=String.valueOf(Cod);Num_os.setText(CodS);System.out.print(Cod);System.out.print(CodS);}}catch(SQLExceptionex){JOptionPane.showMessageDialog(null,"Problema de conexao: "+ex.getMessage());}}
Tenho uma aplicação e quero fazer o seguinte ela vai no banco faz um select com order by e pega o ultimo id, soma +1 desse numero e retorna para um jtextfield, fiz o código abaixo mas não esta funcionando nem dando ERRO ALGUM poderia me ajudar?!?!?
Segue o código:
lina
Oi,
Ele não disse “erro algum” e sim “erro alguem”.
Obs.: Por favor, verifique a sua caixa de mensagens (MP)
Bom, analisando o código o motivo realmente é que não está passando a query. Logo, não entra no while.:
rs = MeuState.executeQuery("<colocar o comando ou query a ser executada>");
while (rs.next()) {
Tchauzin!
Willdoidao
Ops! Foi mal tava tão nervoso em nw descobri o erro que copiei errado
publicvoidcarregaCodigoOs(){Connectionconn=newconeccao().conectar();ResultSetrs=null;try{// Cria e executa uma instru��o SQLMeuState=conn.createStatement();}catch(SQLExceptionex){ex.printStackTrace();JOptionPane.showMessageDialog(null,"erro de STATEMENT");}try{rs=MeuState.executeQuery("select idOrdem from ordemserv order by idOrdem");while(rs.next()){rs.last();intCod=rs.getInt("idOrdem");Cod=Cod+1;StringCodS=String.valueOf(Cod);Num_os.setText(CodS);System.out.print(Cod);System.out.print(CodS);}}catch(SQLExceptionex){JOptionPane.showMessageDialog(null,"Problema de conexao: "+ex.getMessage());}}
D
doug_sciani
Duas perguntas, não está dando erro algum!? Por que está usando while (rs.next()) se depois você atualiza o ponteiro para o final com rs.last(); , não era mais fácil verificar se if(!rs.next) ?
Abraços
pmlm
E para que ir buscar todos se só queres o último?
SELECTmax(nvl(idOrdem,0)+1fromordemserv
Willdoidao
Mudei o codigo ficou assim:
publicvoidcarregaCodigoOs(){Connectionconn=newconeccao().conectar();ResultSetrs=null;try{// Cria e executa uma instru��o SQLMeuState=conn.createStatement();}catch(SQLExceptionex){ex.printStackTrace();JOptionPane.showMessageDialog(null,"erro de STATEMENT");}try{rs=MeuState.executeQuery("select idOrdem from ordemserv order by idOrdem");if(!rs.next()){intCod=rs.getInt("idOrdem");Cod=Cod+1;CodS=String.valueOf(Cod);}}catch(SQLExceptionex){JOptionPane.showMessageDialog(null,"Problema de conexao: "+ex.getMessage());}}
Mas mesmo assim nw esta funcionando nem dando erro, o que quero é pegar o ultimo id da tabela e somar mais um (+1) e depois mandar ele para um Jtext para mostrar ao usuario. Nw endenti ainda aonde estou errado, alguem tem alguma idea?
Cara poderia me dar algum exemplo? Pq to pastando nisso e nw to saindo do lugar!
D
doug_sciani
Bom cara, seguinte, você gostaria de saber código de classe de conexão!?
publicclassConexao{publicstaticConnectionabrirConexao(){Connectioncon=null;try{Class.forName("com.mysql.jdbc.Driver");Stringurl="jdbc:mysql://localhost/sexagenarios"; String user = "root"; String senha = "";con=DriverManager.getConnection(url,user,senha);}catch(Exceptione){e.printStackTrace();}returncon;}}
Dae uma classe de DAO, que é para inserir, fazer select essas paradas… vc faria mais ou menos assim:
exemplo do codigo:
publicclassCadastro{publicvoidadicionaCadastroMedico(Medicomedico){Connectioncon=(Connection)Conexao.abrirConexao();Stringsql="INSERT INTO medico(Nome) VALUES(?)";try{PreparedStatementstmt=(PreparedStatement)con.prepareStatement(sql);stmt.setString(1,medico.getNomeMedico());stmt.executeUpdate();stmt.close();con.close();}catch(MySQLIntegrityConstraintViolationExceptionex){JOptionPane.showMessageDialog(null,"Este nome já foi cadastrado","Cadastro Médico",JOptionPane.PLAIN_MESSAGE);}}
Dae basta no codigo vc instanciar um objeto do tipo cadastro e chamar o metodo
fik mais limpo o codigo da classe principal
^^
Willdoidao
Caras ainda nw consegui resolver o problema ainda, fiz como vcs indicaram um classe DAO mas nada de funcionar o estranho é que está incluindo mas nw consigo buscar o ID e voltar no campo.
Classe DAO:
publicclassBancoDados{privateConnectionconexao;// OBJETO DE CONEXAO privateResultSetrs;// OBJETO DE RESULTADO DE QUERY DE CONSULTAprivateStatementmeuState;privateStringbanco="jdbc:mysql://localhost/mydb";privateStringuser="root";privateStringsenha="otica123";// ATRIBUTOS PARA CONTROLAR OS ERROS DAS CONSTRAINTS// CODIGOS DE ERROS DO MYSQL// FICA FACIL A MUDANÇA DE BANCOpublicinterroUnique=1062;publicinterroDelete=1451;// MENSAGEM ERROpublicvoidMsgErro(Stringmensagem){JOptionPane.showMessageDialog(null,mensagem,"Centro de Comunicação UNIRP - ERRO",JOptionPane.ERROR_MESSAGE);}// INICIAR CONEXÃO// TODA VEZ QUE É NECESSARIO CONSULTAR O BANCO É FEITO A CONEXAO// O SISTEMA NÃO FICARA CONECTADO DIRETO NO BANCOprivatebooleaniniciarConexao(){try{Class.forName("com.mysql.jdbc.Driver");conexao=DriverManager.getConnection(banco,user,senha);meuState=(Statement)conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);returntrue;}catch(ClassNotFoundExceptionex){MsgErro("Driver JDBC não econtrado!");returnfalse;}catch(SQLExceptionex){MsgErro("Falha na conexão com o banco de dados!");//MsgErro(ex.getMessage());returnfalse;}}// EXECUTAR INSERT, UPDATE E DELETE// RETORNA O ERRO publicintexecutaUpdate(Stringsql){if(iniciarConexao()==true){try{meuState.executeUpdate(sql);conexao.close();return0;}catch(SQLExceptionex){JOptionPane.showMessageDialog(null,"Não consigo cadastrar \n"+ex);//MsgErro(String.valueOf(ex.getErrorCode()));//MsgErro(ex.getMessage());returnex.getErrorCode();}}else{return-1;}}// EXECUTAR QUERY (CONSULTA)// RETORNA O RESULTSET COM A RESPOSTA DA CONSULTApublicResultSetexecutaQuery(Stringsql){if(iniciarConexao()==true){try{rs=meuState.executeQuery(sql);//conexao.close();returnrs;}catch(SQLExceptionex){MsgErro(ex.getMessage());returnnull;}}else{returnnull;}}}
Código para buscar o id:
publicvoidcarregaCodigoUsuario(){Stringsql="select idOrdem from ordemserv order by idOrdem";BancoDadosbanco=newBancoDados();ResultSetresult;try{result=banco.executaQuery(sql);if(!result.next()){Num_os.setText("1");}else{result.last();StringCodigo=result.getString("idOrdem");intCod=Integer.parseInt(Codigo)+1;Codigo=String.valueOf(Cod);Num_os.setText(Codigo);}}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"Erro ResultSet");}}