pessoal estou tentando pegar o ultimo valor do banco dessa maneira e mostrar em um joptionpane, mas não está dando certo. segue…
Class.forName(Auxiliar1.AcessoBanco.getDriver());Connectioncon=DriverManager.getConnection(Auxiliar1.AcessoBanco.getUrl(),Auxiliar1.AcessoBanco.getUser(),Auxiliar1.AcessoBanco.getPass());Stringquery1="Select MAX(ExtA_IndParafuso)FROM L11 ORDER BY ExtA_IndParafuso asc";Statementst=con.createStatement();ResultSetrs=st.executeQuery(query1);JOptionPane.showMessageDialog(null,rs);
Bom dia Edu,tentei da sua forma e não deu certo. Confirmei a existencia da tabela com a coluna e mostrei nas imagens logo a cima.
Coloquei para ele pegar o valor e colocar em um campo, mas ele está pegando esse valor.
Coloquei também para que ele me retornasse o ultimo valor do banco a cada 5 segundos, e ele esta me retornando o valor da imagem acima e somando + 1 a cada 5 segundos… exemplo: 6,7,8,9…
No seu JOptionPane estava retornando os valores corretos?
Dentro do seu catch, defina:
e.printStackTrace();
Para saber o erro quando acontecer. Passe aqui se cuspir algum erro no console.
R
Rafaaw
fiz da maneira q vc disse, mas mesmo assim não trouxe nenhum valor. Respondendo a pergunta se pelo pane trouxe, também não.
try{Class.forName(Auxiliar.AcessoBanco.getDriver());Connectioncon=DriverManager.getConnection(Auxiliar.AcessoBanco.getUrl(),Auxiliar.AcessoBanco.getUser(),Auxiliar.AcessoBanco.getPass());Stringquery1="Select MAX(ID_RESULTADO) FROM Resultado";Statementst=con.createStatement();ResultSetrs=st.executeQuery(query1);rs.getFloat(query1);intvalor=rs.getInt(0);jTextField6.setText(String.valueOf(valor));}catch(Exceptione){e.printStackTrace();}
E
edumatias
Opa
Tente:
try{Class.forName(Auxiliar.AcessoBanco.getDriver());Connectioncon=DriverManager.getConnection(Auxiliar.AcessoBanco.getUrl(),Auxiliar.AcessoBanco.getUser(),Auxiliar.AcessoBanco.getPass());Stringquery1="Select MAX(ID_RESULTADO) FROM Resultado";Statementst=con.createStatement();ResultSetrs=st.executeQuery(query1);intvalue=0;while(rs.next()){value=rs.getInt(1);}jTextField6.setText(String.valueOf(value));JOptionPane.showMessageDialog(null,value);}catch(Exceptione){e.printStackTrace();}
ou também
try{Class.forName(Auxiliar.AcessoBanco.getDriver());Connectioncon=DriverManager.getConnection(Auxiliar.AcessoBanco.getUrl(),Auxiliar.AcessoBanco.getUser(),Auxiliar.AcessoBanco.getPass());Stringquery1="Select MAX(ID_RESULTADO) as max_value FROM Resultado";Statementst=con.createStatement();ResultSetrs=st.executeQuery(query1);intvalue=0;while(rs.next()){value=rs.getInt("max_value");}jTextField6.setText(String.valueOf(value));JOptionPane.showMessageDialog(null,value);}catch(Exceptione){e.printStackTrace();}
Veja se joga algum erro no console.
Este valor ID_RESULTADO é um inteiro, certo?
R
Rafaaw
Edu, eu fiz desse ultimo exemplo seu, mas estou com um grande problema, ele esta trazendo o maior valor independente se é o ultimo ou não. nesse caso meu ultimo valor é 50, mas o valor lançado pela pessoa foi 420… então ele está trazendo 420.
e mais uma duvida eu tentei passar para float e parece q deu certo. Da uma olhada se está certo.
try{Class.forName(Auxiliar.AcessoBanco.getDriver());Connectioncon=DriverManager.getConnection(Auxiliar.AcessoBanco.getUrl(),Auxiliar.AcessoBanco.getUser(),Auxiliar.AcessoBanco.getPass());Stringquery1="Select MAX(ID_RESULTADO) as max_value FROM Resultado";Statementst=con.createStatement();ResultSetrs=st.executeQuery(query1);intvalue=0;while(rs.next()){value=(int)rs.getFloat("max_value");}jTextField6.setText(String.valueOf(value));JOptionPane.showMessageDialog(null,value);}catch(Exceptione){e.printStackTrace();}
E
edumatias
E ai
Quando você usa o MAX ele traz sim o maior valor.
Pra você trazer o último você deve ter uma coluna com a data de inserção e trazer o maior valor baseado nessa coluna de data de inserção.
R
Rafaaw
Eu tenho essa coluna q no caso é a minha “E3TimeStamp”
Select MAX(ExtA_IndParafuso) FROM L11 GROUP BY E3TimeStamp fiz assim e deu certo edu, mas não está retornando em float… vc deu uma olhada da meneira q te mandei logo a cima?
Deu certo cara, vc é foda!! valeu pela paciência… muito obrigado mesmo!
R
Rafaaw
Tentei colocar um segundo valor nessa mesma consulta mas não deu certo kkk… vou ter q criar uma consulta para cada valor q eu quiser buscar?
E
edumatias
Você fala
SELECT ID_RESULTADO, OUTRO_CAMPO FROM Resultado ORDER BY E3TimeStamp DESC LIMIT 1
Você pode fazer dessa forma
while(rs.next()){value1=rs.getFloat(“ID_RESULTADO”);value2=rs.getFloat(“OUTRO_CAMPO”);//se for float, ou getString, getInt,…}
R
Rafaaw
no meu caso estou usando o ‘Select MAX(ExtA_IndRpm) FROM L11 GROUP BY E3TimeStamp’
Então ficaria assim?
“Select MAX(ExtA_IndRpm), MAX(ID_RESULTADO ) FROM L11 GROUP BY E3TimeStamp”
E
edumatias
Isto. Mas faça assim
Select MAX(ExtA_IndRpm) as valor1, MAX(ID_RESULTADO ) as valor2 FROM L11 GROUP BY E3TimeStamp
Atribui um alias (apelido)
Ai varrendo seu Resultset ficaria:
while(rs.next()){
value1=rs.getFloat("valor1");value2=rs.getFloat("valor2"); //se for float, ou getString, getInt,...
}
R
Rafaaw1 like
Perfeito, muito obrigado!
R
Rafaaw
Edu, mais uma duvida kkkkkkk, estou te amolando demais. Queria saber se é possível eu trazer esse valor em float com apenas uma casa decimal, pois o sistema pega o valor da máquina e já salva ela com um valor float gigante nesse nível aqui “22.6273632049561”
J
Jederson_Andre
vc tem que configurar o campo que vai receber este valor