Pessoal tô com um pequeno problema, fiz um pequeno sistema, dentro do netbeans roda que é uma beleza mas quando mando compilar pra executar a partir do jar não funciona, criei um log pra reportar o erro e dá o seguinte erro:
003014042013 org.firebirdsql.jdbc.FBSQLException: The resultSet is not in a row, use next
Por favor, ao postar tópicos, não deixe o título INTEIRO EM LETRAS MAIÚSCULAS.
ViniGodoy
Esse erro ocorre porque aparentemente você tentou usar os dados de um ResultSet antes de dar next() nele pelo menos uma vez.
Poste o método do erro, indicado no log, para podermos te ajudar melhor.
Tópico movido para o fórum de persistência.
D
danillorc
Acho que não, mas…:
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){Statementstmt;Connectioncon=null;intcodigo;Stringnome=null;intqtdacesso;Stringsenha;Stringsenha1;Strings_sql;senha=crpt(edtSenha.getText());if("".equals(edtLogin.getText())||"".equals(edtSenha.getText())){}else{s_sql="Select * from CAD_USUARIO where (LOGIN = '"+edtLogin.getText()+"') and (SENHA = '"+senha+"')";try{Conectaconexao=newConecta();conexao.conict();stmt=(Statement)conexao.con.createStatement();try(ResultSetrs=stmt.executeQuery(s_sql)){rs.next();codigo=rs.getInt("CODIGO");nome=rs.getString("LOGIN");senha1=rs.getString("SENHA");qtdacesso=rs.getInt("QTDACESSO");qtdacesso=qtdacesso+1;DateFormatdfmt=newSimpleDateFormat("dd-MM-yyyy");Datehoje=Calendar.getInstance(Locale.getDefault()).getTime();NewClass.acessologin(qtdacesso,dfmt.format(hoje),codigo);}stmt.close();}catch(SQLExceptione){System.out.println(e);Stringerro=String.valueOf(e);NewClass.Gravar(erro);}if(nome.equals(edtLogin.getText())){// marcar a hora que foi acessado e quem acessolo usar o logFrmPrincipalformprincipal=newFrmPrincipal();formprincipal.show();this.dispose();}else{JOptionPane.showMessageDialog(this,"USUÁRIO OU SENHA NÃO CONFERE");edtLogin.setText("");edtSenha.setText("");edtLogin.requestFocus();}}}
ViniGodoy
É bom testar se o rs.next() retornou true, pois o usuário em questão pode não existir na base de dados:
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){if(edtLogin.getText().isEmpty()||edtSenha.getText().isEmpty()){JOptionPane.showMessageDialog(this,"Preencha um login e uma senha!");edtLogin.requestFocusInWindow();return;}Stringsenha=crpt(edtSenha.getText());Stringsql="SELECT * FROM Cad_Usuario WHERE login=? AND SENHA=?";try{Conectaconexao=newConecta();conexao.conict();try(PreparedStatementstmt=conexao.con.prepareStatement(sql)){stmt.setString(1,edtLogin.getText());stmt.setString(2,senha);try(ResultSetrs=stmt.executeQuery()){if(!rs.next()){JOptionPane.showMessageDialog(this,"USUÁRIO OU SENHA NÃO CONFERE");edtLogin.setText("");edtSenha.setText("");edtLogin.requestFocusInWindow();return;}DateFormatdfmt=newSimpleDateFormat("dd-MM-yyyy");Datehoje=Calendar.getInstance(Locale.getDefault()).getTime();NewClass.acessologin(rs.getInt("QTDACESSO")+1,dfmt.format(hoje),rs.getInt("codigo"));}}}catch(SQLExceptione){System.out.println(e);Stringerro=String.valueOf(e);NewClass.Gravar(erro);}}
D
danillorc
Mas se eu rodar direto do Netbeans ele funciona e filtra beleza mas depois de compilado não, e interessante é que ele conecta na base de dados.
publicclassConecta{publicConecta(){}Stringbanco="C:/sistema/dados/DADOS.GDB";privateStringurl="jdbc:firebirdsql:localhost/3050:"+banco;privateStringdriver="org.firebirdsql.jdbc.FBDriver";privateStringuser="sysdba";privateStringpwd="masterkey";Connectioncon=null;publicConnectionconict(){try{Class.forName(driver);con=DriverManager.getConnection(url,user,pwd);}catch(ClassNotFoundExceptione){JOptionPane.showMessageDialog(null,"Erro: "+e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);Stringerro=String.valueOf(e);NewClass.Gravar(erro);}catch(SQLExceptione){JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Erro na Conexão com Banco\n"+e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);Stringerro=String.valueOf(e);NewClass.Gravar(erro);}System.out.println("Conectado");NewClass.Gravar("Conectado");returncon;}}