Java Web MVC Update



我正在学习Java CRUD操作。我正在尝试更新sql数据库中的记录。insert和display all records方法正在工作,但问题是当我单击update时,什么都没有发生。

这是我的模式HTML更新。

<div id="myModal2" class="modal">
<div class="modal-content">
<style type="text/css" media="screen">
.modal-content  {
width: 20%;
text-align: center;
}
</style>
<span class="close">×</span>
<h2 style="text-align: center";>Modificar un beneficio</h2>
<form action="MantenedorBeneficios" method="get" var="reg" items="${lista_beneficios}">
<input type="hidden" name="accion" value="cargar"/>
<label>Nombre Beneficio: </label>
<input type="hidden" name="id_beneficio" value="${reg.getId()}"/>
<input type="text" name="nombreBe" value="${reg.getnombre()}" />
<button type="submit" class="btn btn-success" > Modificar Beneficio </button>
</form>
</div>
</div>

以下是CRUD操作的数据访问代码。

public static List<RegistroMantenedorBeneficios> cargarBeneficio(){
Connection conn = null;
PreparedStatement stmt = null;
List<RegistroMantenedorBeneficios> lista_registros = new ArrayList<RegistroMantenedorBeneficios>();
RegistroMantenedorBeneficios registro = null;
ResultSet rs = null;

try{
conn = c.Conectar();
Statement stm = conn.prepareStatement("Select from * beneficio where id_beneficio=?");
rs = stmt.executeQuery();                                      
while (rs.next()) {
registro = new RegistroMantenedorBeneficios();
registro.id = rs.getInt("id");
registro.nombre = rs.getString("nombre");
registro.id_tipo = rs.getInt("id_tipo_beneficio");
registro.vigente = rs.getBoolean("vigente");
lista_registros.add(registro);

}
}
catch (Exception ex){
ex.printStackTrace(System.out);
System.out.println(">>> Exception BeneficiosDB/InsertarNuevoBeneficio n" + ex.getMessage());
}
finally{
c.cerrarConexion(conn);
}
return lista_registros;
}

这是servlet代码。

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String accion = request.getParameter("accion");

if (accion != null && accion.equals("vigencia")){
int id_ben = Integer.parseInt(request.getParameter("id"));
boolean is_vig = Boolean.parseBoolean(request.getParameter("bool"));

BeneficiosDB.ActualizarVigenciaBeneficio(id_ben, is_vig);
}

if (accion != null && accion.equals("insertar")){
String nombre = request.getParameter("nombreBe");
int id_tipo = Integer.parseInt(request.getParameter("id_tipo"));
int vigente = Integer.parseInt(request.getParameter("bool"));

BeneficiosDB.InsertarNuevoBeneficio(nombre, id_tipo, vigente);
}
//not working
if (accion != null && accion.equals("cargar")){
int id = Integer.parseInt(request.getParameter("id_beneficio"));
String nombre = request.getParameter("nombreBe");
int id_tipo = Integer.parseInt(request.getParameter("id_tipo"));
boolean vigente = Boolean.parseBoolean(request.getParameter("vigente"));

}

List<RegistroMantenedorBeneficios> registros_beneficios = BeneficiosDB.ListaBeneficios();
//List<RegistroMantenedorBeneficios> registros_beneficioss = BeneficiosDB.cargarBeneficio();
//request.setAttribute("lista_beneficioss", registros_beneficioss);
request.setAttribute("lista_beneficios", registros_beneficios);
request.getRequestDispatcher("Mantenedores/MantenedorBeneficios.jsp").forward(request, response);
}

如果我理解你的问题,那么你正试图从modal更新一条记录,其中id是";id_ beneficio";并且由于只有一个可见字段,我假设它更新"0"的值;nombreBe";。

有了这些假设,你需要纠正

  1. BeneficiosDB.GararBeneficio应在BeneficioDB.ListaBeneficios.之前从控制器调用

  2. 您的sql是一个普通的select stmt,它需要更新stmt,而且您需要使用在stmt中设置id_beneficio和nombreBe的值您的sql应该是

update beneficio set nombreBe = ? where where id_beneficio=?
stmt.setInt(nombreBe); // can be setString depending on your data-type.
stmt.setInt(id_beneficio);

请在使用之前验证更新查询一次。

最新更新