我尝试插入数据以使用组合选择产品类 idcat 类类别,但请没有任何想法
-课程
公共类类别{
private int idcat; private String name; private String descrip;
}
公共类产品{
private int producto; private int idcategoria; private String nombre; private String descrip;
}
-DAO CLASS CategoriaDAO
公共集合 listarIdCat() 抛出 DAOExcepcion{
Collection<Categoria> c=new ArrayList<Categoria>(); String query="SELECT id_categoria from categoria "; Connection con=null; PreparedStatement stmt=null; ResultSet rs=null; try { con=ConexionBD.obtenerConexionDirecta(); stmt=con.prepareStatement(query); rs=stmt.executeQuery(); while(rs.next()) { Categoria vo=new Categoria(); vo.setIdcat(rs.getInt("id_categoria")); c.add(vo); } } catch (SQLException e) { System.err.println(e.getMessage()); throw new DAOExcepcion(e.getMessage()); }finally{ this.cerrarStatement(stmt); this.cerrarResultSet(rs); this.cerrarConexion(con); } return c; }
DAO类产品oDAO
public void insertar(Producto vo) throws DAOExcepcion { > > String query = "INSERT INTO producto(id_categoria,nombre,descripcion) VALUES ((SELECT id_categoria > FROM categoria WHERE id_categoria=?),?,?,?)"; > Connection con = null; > PreparedStatement stmt = null; > > try { > con = ConexionBD.obtenerConexionDirecta(); > stmt = con.prepareStatement(query); > stmt.setInt(1, vo.getIdcat()); > stmt.setString(2, vo.getNombre()); > stmt.setString(3, vo.getDescrip()); > int i = stmt.executeUpdate(); > if (i != 1) { > throw new SQLException("No se pudo insertar"); > } > } catch (SQLException e) { > System.err.println(e.getMessage()); > throw new DAOExcepcion(e.getMessage()); > } finally { > this.cerrarStatement(stmt); > this.cerrarConexion(con); > } > > }
NEGOCIO CLASS 类别Negocio
公共类CategoriaNegocio {
public Collection<Categoria> listarIdCat()throws DAOExcepcion{ CategoriaDAO dao=new CategoriaDAO(); Collection<Categoria> lista=dao.listarIdCat(); return lista; }
}
NEGOCIO CLASS 产品Negocio
public void insertarProducto(int idCat, String nom, String descrip, double prec, int stock, String image) throws DAOExcepcion { Producto p = new Producto(); p.setIdcat(idCat); p.setNombre(nom); p.setDescrip(descrip); ProductoDAO dao = new ProductoDAO(); try { dao.insertar(p); } catch (DAOExcepcion e) { throw e; } }
SERVLET InsertarProdServlet
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { CategoriaNegocio negocio = new CategoriaNegocio(); try { Collection<Categoria> lista = negocio.listarIdCat(); request.setAttribute("IDCATEGORIA", lista); } catch (DAOExcepcion e) { System.out.println(e.getMessage()); } RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/insertar.jsp"); rd.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id=request.getParameter("tid_cat"); int idcat=Integer.parseInt(id.trim()); String nom=request.getParameter("tnomprod"); String des=request.getParameter("tdesprod"); ProductoNegocio negocio=new ProductoNegocio(); try { negocio.insertarProducto(idcat, nom, des); request.setAttribute("MENSAJE", "Se inserto correctamente"); RequestDispatcher rd=request.getRequestDispatcher("/insertar.jsp"); rd.forward(request,response); } catch (DAOExcepcion e) { request.setAttribute("MENSAJE_ERROR", "Hubo problemas"); RequestDispatcher rd=request.getRequestDispatcher("/error.jsp"); rd.forward(request,response); } }
JSP 插件
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="InsertarProdServlet" method="post">
<table><caption>Inserte Producto</caption>
<tr>
<td align="center"><select name="tid_cat" size="1" >
<c:forEach items="${IDCATEGORIA}" var="c" >
<option value="${c.idcategoria}" >${c.idcategoria}</option>
</c:forEach>
</select></td><td>
</td>
</tr>
<tr>
<td>NOMBRE</td><td><input type="text" name="tnomprod"> </td></tr><tr>
<td>DESCRIPCION</td><td><input type="text" name="tdesprod" > </td></tr><tr>
<td><input type="submit" value="INSERTAR"> </td></tr><tr>
</tr>
</table>
</form>
${MENSAJE}
</body>
</html>