Por favor ajudem! Bean não atualiza DB!

4 respostas
G

Olá a todos,
tenho uma jsp que a cada clique no botão deve acessar um banco de dados (MySQL) pegar um valor inteiro, somar um e atualizar o banco de dados.
O problema é que só funciona da primeira vez, explico: quando clico no botão ele pega o valor e acrescenta um, entretanto, se cliquo novamente o valor anterior se repete e não o novo!
O que está acontecento??? Seguem os códigos:

minha jsp:

<%@ page session="false" %>
<%!
  // carregando driver para banco de dados
  public void jspInit() {
    try {
      Class.forName("org.gjt.mm.mysql.Driver");
      System.out.println("MySQL driver carregado");
    }
    catch (ClassNotFoundException e) {
      System.out.println(e.toString());
    }
  }
%>

<jsp:useBean id="meuDBBean" class="com.ladabio.sqlTools.meuDBBean"/>

<HTML>
<HEAD></HEAD>
<javascript>//
 function jsAtualiza() {
    <%
      int res = meuDBBean.pegaDado();
    %>
    var ale = <%=res%>;
    alert(ale);
}
<javascript>

<BODY>
<FORM>
<BR>
 <INPUT type="button" value="Atualizar"
   onClick = "jsAtualiza();">
</FORM>
</BODY>
</HTML>

e o meu bean:

package com.ladabio.sqlTools;

import java.sql.*;

public class meuDBBean {
	public int pegaDado(){
		int Dado;
		int iCond1 =0;
		try {
	      	   String dbUrl = "jdbc:mysql://127.0.0.1:3306/Books";
	      	   String dbUserName = "root";
	      	   String dbPassword = "";
	      	   Connection connection = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
                   Statement st = connection.createStatement();
		   //
	      	   // Recuperando ultimo dado gravado
	           String sql = "SELECT ultimo FROM DadosTeste WHERE dado='0'";
	           ResultSet rsUltimo = st.executeQuery(sql);
	           while (rsUltimo.next()){
	        	iCond1 = rsUltimo.getInt(1);
	           }
                   //
                   Dado = iCond1;
                   // Atualizando ultimo dado
		   iCond1++;
		   sql = "UPDATE dadosteste SET ultimo ='" + iCond1 + "' WHERE dado LIKE '0'" ;
		   st.executeUpdate(sql);
		   st.close();
                   connection.close();
	           //
		   return Dado;
		}
		catch (SQLException exp1) {
	           System.out.println(exp1.toString());
                   Dado = 0;
	           return Dado;
		}
		
	} // fim do método pegaDados

} // fim da classe meuDBBean

4 Respostas

V
con.commit();

:wink:

G

Cara, não funcionou!

Acho que o problema está na jsp…(o problema é que preciso usar javascript). Como faço?

D

hum…o jsp dentro do javascript não funciona…sei por experiência própria…

<% 
      int res = meuDBBean.pegaDado(); 
    %> 
    var ale = <%=res%>; 
    alert(ale);

tu podes fazer essa ação ser executada cada vez que carrega a página e colocar o valor a ser exibido no alert dentro de um campo hidden…
aí, sim, crie um javascript só para dar um reload na página.

[]'s

G

vc poderia colocar um exemplo?
Valeu

Criado 18 de janeiro de 2005
Ultima resposta 18 de jan. de 2005
Respostas 4
Participantes 3