0

Actualizacion:

Buenas, luego de seguir algunas recomendaciones de mi compañero de abajo y aplicando un poco en mi codigo, me surge el siguiente problema:

Codigo de mi clase BD:

public void InsertoImagen (ImagenPrincipalPR imagenPrincipalPR)
    {
        try {
            con = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/Sistem.DB","postgres","ender");
         String SQLInsert = ("INSERT INTO categoria_pr (nombre_pr,descripcion_pr,image_pr,enum_pk)"
                 + "VALUES (?,?,?,?)");
                         File archivo = imagenPrincipalPR.getFoto();
                         FileInputStream convertir = null;
        if (imagenPrincipalPR.getFoto() != null)
        {
              String SQLInsertImage = ("INSERT INTO categoria_pr (image_pr)"
                 + "VALUES (?)");
                try {
                    convertir = new FileInputStream (archivo);
                } catch (FileNotFoundException ex) {
                    ex.printStackTrace();
                }
              Sta = con.prepareStatement(SQLInsertImage);
              Sta.setBinaryStream(3, convertir,(int)archivo.length());
        }
        else
        {
     Sta = con.prepareStatement(SQLInsert);
     Sta.setString(1, imagenPrincipalPR.getNombre());
     Sta.setString(2, imagenPrincipalPR.getDescripcion());
     Sta.setInt(4, imagenPrincipalPR.getEnum());

        }
        } catch (SQLException ex) {
            ex.printStackTrace();

        }
        finally
        {
            try {
                con.close();
                Sta.close();
            } catch (SQLException ex) {
              ex.printStackTrace();
            }
        }
    }

En esta parte, por medio de construccion defino un objeto de tipo ImagenPrincipal, el cual hare el insert a lo que le estableci.

introducir la descripción de la imagen aquí

Mediante un buttom (señalado en la imagen), declaro un JFileChooser que me permite seleccionar la imagen y pasarla al Label

Codigo del Buttom:

public void Imagen()
    {
           JFileChooser Cargar = new JFileChooser();
           FileNameExtensionFilter formato = new FileNameExtensionFilter("Solo Imagenes: JPG,PNG O GIFT","jpg","gift","png");
           Cargar.setFileFilter(formato);
            int a = Cargar.showOpenDialog(this);
            if (a==JFileChooser.APPROVE_OPTION)
            {
                imagenCateP = Cargar.getSelectedFile();
                ImageIcon IconoImagen = new ImageIcon(imagenCateP.getAbsolutePath());
                int ancho = FotoCate.getWidth();
                int alto = FotoCate.getHeight();
                Image RImage = IconoImagen.getImage();
                RImage.getScaledInstance(ancho, alto, Image.SCALE_DEFAULT);
                ImageIcon RedimensionImagen = new ImageIcon(RImage);
                FotoCate.setIcon(RedimensionImagen);   
            }              
    }

En el Buttom "Aceptar" tengo el siguiente metodo cargado, el cual es el que me va servir para obtener los campos e ingresarlos a la DB.

 public void Aceptar()
    {
      Nom = this.NomCate.getText();
      Descrip = this.DescripMain.getText();
      if (imagenCateP == null)
      {
          JOptionPane.showMessageDialog(this, "Debe Escojer una foto");
      }
      else{
      ImagenPrincipalPR Creacion = new ImagenPrincipalPR(Nom, Descrip,imagenCateP,a);
      Base.InsertoImagen(Creacion);
      }
    }

Al ejecutar el Codigo me da el siguiente error:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at VentanaDeCreacion.Aceptar(VentanaDeCreacion.java:73)
    at VentanaDeCreacion.ButtonAceptActionPerformed(VentanaDeCreacion.java:208)
    at VentanaDeCreacion.access$400(VentanaDeCreacion.java:18)
    at VentanaDeCreacion$4.actionPerformed(VentanaDeCreacion.java:123)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6516)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6281)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4872)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:706)
    at java.awt.EventQueue$3.run(EventQueue.java:704)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.awt.EventQueue$4.run(EventQueue.java:718)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:154)
    at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219)
    at java.awt.Dialog.show(Dialog.java:1082)
    at java.awt.Component.show(Component.java:1655)
    at java.awt.Component.setVisible(Component.java:1607)
    at java.awt.Window.setVisible(Window.java:1014)
    at java.awt.Dialog.setVisible(Dialog.java:1005)
    at VentanaDeCreacion$6.run(VentanaDeCreacion.java:258)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:706)
    at java.awt.EventQueue$3.run(EventQueue.java:704)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Leyendo mucho en foros y viendo videos en youtube, sucede que el error aparece cuando se le esta estableciendo un NULL a un objeto, pero sinceramente mirando y mirando repetidas veces el codigo y cambiando los metodos principales no encuentro el error o a menos que lo este interpretando mal.

Si algun experto en el tema me pudiera ayudar con esto, y algunos consejos para mejorar (soy iniciado en esta lenguaje).

Gracias ^^

Jose sequera
  • 33
  • 1
  • 1
  • 6
  • Hola Enderson bienvenido a la comunidad, si lo que quieres es guardar una imagen en la BD debes utilizar el formato BLOB (Binary Large Objects, objetos binarios grandes) para la columna de la base de datos y convertir el FILE a binario, este tipo es utilizado para guardar imágenes pero puedes insertar cualquier valor que sea convertido a binario, como no especificas la BD que utilizas te dejo un exelente tutorial para mysql en que aprenderás a agregar un un campo de tipo LONGBLOB a una tabla y a insertar y obtener un pdf en este campo http://www.mysqltutorial.org/mysql-jdbc-blob. – Roberto E Moran May 10 '19 at 15:29
  • Gracias por responder!, actualmente estoy usando PostgresSQL – Jose sequera May 11 '19 at 19:06
  • Puedes seguir este tutorial para postgreSQL : http://jeebestpractices.blogspot.com/2011/03/save-images-into-database-postgres-with.html – Roberto E Moran May 13 '19 at 16:16
  • Hola amigo como estas?, hice una actualizacion a mi post, si puedes revisarla por favor (y) – Jose sequera May 15 '19 at 05:01

0 Answers0