public static ArrayList<Detalle> getAll(int codigo) throws SinBaseDatosException {
   ArrayList<Detalle> a = null;
   BD bd = null;
   try {
     bd = new BD();
     StringBuilder sb = new StringBuilder();
     sb.append("select d.idDetalle, d.codigoComic, c.codigo, c.nombre, c.numero from detalle as d")
         .append(" join comic as c on d.codigoComic=c.codigo ")
         .append("where d.id_venta=")
         .append(codigo);
     ResultSet r = bd.createStatement().executeQuery(sb.toString());
     a = new ArrayList<>();
     while (r.next()) {
       int id = r.getInt("idDetalle");
       int codigoComic = r.getInt("codigoComic");
       int c_codigoComic = r.getInt("codigo");
       String c_nombre = r.getString("nombre");
       int c_numero = r.getInt("numero");
       a.add(new Detalle(id, new Comic(c_codigoComic, c_nombre, c_numero)));
     }
     r.close();
   } catch (SQLException ex) {
     Logger.getLogger(DetalleDAL.class.getName()).log(Level.SEVERE, null, ex);
   } finally {
     if (bd != null) {
       bd.close();
     }
   }
   return a;
 }
 public Integer guardar(int idVenta, int codigoComic) throws SinBaseDatosException {
   Integer s = null;
   BD bd = null;
   try {
     bd = new BD();
     boolean b =
         bd.update(
             "insert into detalle (id_venta, codigoComic) values (?,?)", idVenta, codigoComic);
     if (b) {
       s = bd.lastId();
     }
   } catch (CodigoRepetidoException ex) {
     Logger.getLogger(DetalleDAL.class.getName()).log(Level.SEVERE, null, ex);
   } catch (SQLException ex) {
     Logger.getLogger(DetalleDAL.class.getName()).log(Level.SEVERE, null, ex);
   } finally {
     bd.close();
   }
   return s;
 }