Gostaria da ajuda dos colegas. Estou com uma aplicação e estou com problema nas funções de Editar e Deletar um registro em um banco de dados. Estou utilizando JSP + Struts.
Classe onde estão as instruções SQL e conexão com DBpackage controleCartoes.DB;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Collection;
import java.util.LinkedList;
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.Statement;
import controleCartoes.bean.Usuarios;
public class ControleDB {
private static ControleDB instancia;
private ControleDB(){
}
public static ControleDB getInstance(){
if (instancia == null) {
instancia = new ControleDB();
}
return instancia;
}
public static void main(String[] args) {
try {
ControleDB inf = new ControleDB();
inf.getConnection();
System.out.println("Conectando");
}catch (Exception e){
e.printStackTrace();
}
}
//Lista toddos os usuários
public Collection getUsuarios() throws SQLException {
LinkedList<Usuarios> users = new LinkedList<Usuarios>();
Connection con = getConnection();
Statement stmt = (Statement) con.createStatement();
ResultSet rs = (ResultSet) stmt.executeQuery("SELECT * FROM USUARIO ORDER BY USER_NAME");
while (rs.next()){
users.add(new Usuarios (rs.getInt("cod_user"),rs.getString("user_name")));
}
rs.close();
stmt.close();
con.close();
return users;
}
//Lista usuário selecionado
public Usuarios getUsuario(int cod_user) throws SQLException {
Usuarios user = null;
Connection con = getConnection();
Statement stmt = (Statement) con.createStatement();
ResultSet rs = (ResultSet) stmt.executeQuery("SELEC * FROM usuario WHERE cod_user = '"+cod_user+"' ");
if (rs.next()) {
user = new Usuarios(rs.getInt("cod_user"), rs.getString("user_name"));
}
rs.close();
stmt.close();
con.close();
return user;
}
//Insere usuário na tabela
public void insereUser (String user_name)throws SQLException {
Connection con = getConnection();
PreparedStatement stmt = (PreparedStatement) con.prepareStatement("INSERT INTO USUARIO (User_name) VALUES (?)");
stmt.setString(1, user_name);
if (stmt.executeUpdate() <=0){
throw new SQLException ("Não foi possível inserir usuário" + user_name);
}
}
//Edita usuário selecionado
public void editaUsuario(String user_name) throws SQLException {
Connection con = getConnection();
PreparedStatement stmt = (PreparedStatement) con.prepareStatement
("UPDATE USUARIO set user_name = ? where cod_user = ? ");
stmt.setString(1, user_name);
if (stmt.executeUpdate() <= 0) {
throw new SQLException("Não foi possível editar usuário: " + user_name);
}
con.close();
}
//Deleta usuário selecionado
public void deletaUsuario (int cod_user) throws SQLException{
Connection con = getConnection();
PreparedStatement stmt = (PreparedStatement) con.prepareStatement
("DELETE FROM USUARIO WHERE cod_user = ?");
stmt.setInt(1, cod_user);
if (stmt.executeUpdate()<=0) {
throw new SQLException("Não foi possível deletar usuário" + cod_user);
}
con.close();
}
//Conexão com Banco de Dados
private Connection getConnection() throws SQLException{
Connection con = null;
try
{
// Carregando o JDBC Driver
String driverName = "org.gjt.mm.mysql.Driver"; // MySQL MM JDBC driver
Class.forName(driverName);
// Criando a conexão com o Banco de Dados
String serverName = "localhost";
String mydatabase = "card";
String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
String username = "root";
String password = "arv52022";
con = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e)
{
// Driver não encontrado
System.out.println("O driver expecificado não foi encontrado.");
} catch (SQLException e)
{
// Não está conseguindo se conectar ao banco
System.out.println("Não foi possível conectar ao Banco de Dados");
}
return con;
}
}
package controleCartoes.actions;
import java.sql.SQLException;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import controleCartoes.DB.ControleDB;
public class ListarUserAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
try{
ControleDB controle = ControleDB.getInstance();
Collection users = controle.getUsuarios();
request.getSession(true).setAttribute("users", users);
return mapping.findForward("sucesso");
}catch (SQLException e){
ActionErrors erros = new ActionErrors();
erros.add(ActionErrors.GLOBAL_MESSAGE, new ActionError ("erros.sqlerror"));
saveErrors(request, erros);
return mapping.findForward("excessoes");
}
}
}
package controleCartoes.actions;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import controleCartoes.DB.ControleDB;
import controleCartoes.bean.Usuarios;
public class PreEditaUserAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
int cod_user = Integer.parseInt(request.getParameter("cod_user"));
System.out.println("Email: " + cod_user);
try {
ControleDB fachada = ControleDB.getInstance();
//Busca user
Usuarios user = fachada.getUsuario(cod_user);
request.getSession(true).setAttribute("user", user);
return mapping.findForward("sucesso");
} catch (SQLException e) {
ActionErrors erros = new ActionErrors();
erros.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.sqlerror"));
saveErrors(request, erros);
System.out.println("Não entrou no TRY");
return mapping.findForward("excecoes");
}
}
}
<%@ page language="java"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"prefix="logic"%>
<html:html locale="true">
<head>
<title><bean:message key="index.title" /></title>
<html:base />
</head>
<body bgcolor="white">
<h2>Lista de usuários cadastrados</h2>
<table border="1">
<tr>
<th>Nome</th>
<th>Editar</th>
<th>Excluir</th>
</tr>
<logic:iterate id="user" name="users">
<tr>
<td><div align="center"><jsp:getProperty name="user" property="user_name" /></div></td>
<td><div align="center"><html:link action="preEditaUser" paramName="user" paramId="cod_user" paramProperty="cod_user">
<img src="Images/edit_but.gif" width="19" height="19" alt="Editar" border="0" align="center" /></html:link></div>
</td>
<td><div align="center"><html:link action="preDeletaUser" paramName="user" paramId="cod_user" paramProperty="cod_user">
<img src="Images/delete.gif" width="19" height="19" alt="Deletar" border="0" align="center" /></html:link></div>
</td>
</tr>
</logic:iterate>
</table>
<html:link page="/index.jsp">Retornar ao índice</html:link>
</body>
</html:html>
O problema é que quando é escolhido o registro a ser Editado/Deletado não está entrando no bloco TRY da classe PreEditaUserAction, é como se não fosse possível localizar o registro dentro da tabela.
Aguardo ajuda!!!