Se que me diran: OYE! PERO EN YOUTUBE Y INTERNET AHI MUCHOS TUTORIALES DE ESO.... Lo se , una de la cosas que me gusta hacer es buscar e indagar siempre sobre un problema o algo que no se, por que de verdad es esencial orientarte y aprender algo sobre los temas y/o personas que están en este mundo de programación, pero sinceramente, por mas que leo y busco no encuentro la forma de como solucionar esto.
Mi código es el siguiente:
Metodo que me permite ingresar datos a la DB
Código
public void InsertoImagen (ImagenPrincipalPR imagenPrincipalPR) { try{ + "VALUES (?,?,?,NULL)"); if (imagenPrincipalPR.getFoto() != null) { try{ { + "values (?)"); archivo = imagenPrincipalPR.getFoto().getAbsoluteFile(); Sta = con.prepareStatement(SQLInsert2); Sta.setBinaryStream(3, convertir ); } ex.printStackTrace(); } } Sta = con.prepareStatement(SQLInsert); Sta.setString(1, imagenPrincipalPR.getNombre()); Sta.setString(2, imagenPrincipalPR.getDescripcion()); Sta.setBinaryStream(3, convertir ); Sta.executeUpdate(); ex.printStackTrace(); } finally { try { con.close(); Sta.close(); ex.printStackTrace(); } } } }
El programa trata de insertar y devolver 3 campos: 2 Strings (Nombre y descripcion),1 File (que este caso es la foto en cuestion).
Como podran darse cuenta, estoy usando el metodo de encapsulacion (SET y GET) para devolver los datos propuestos, luego mediante un Object (unido a un código que verán despues) se obtendran todos los campos de un JDialog. El campo NULL en String SQLInsert, es un tupla de tipo serial que no usare en mi codigo, solo se insertan los datos vistos en el codigo.
Ok, con respecto a la validacion if (imagenPrincipalPR.getFoto() != null), la coloque debido a que el tipo de error de que me salta es NULLPOINTEREXCEPTION. Despues de leer mucho y por lo que he visto, Esto salta cuando algun objeto de mi clase o (algun arguemento en el metodo) es nulo y debe especificarse. Mi metodo lo realize asi, ya que por logica mia , todo el constructor me devuelve nulos, asi que por lo tanto debo hacer validacion para que no me salte el problema, o estoy argumentado mal en esta parte?.
Tambien, tengo una pregunta con respecto a esta parte del método:
¿Es necesario volver a insertar solo ese dato en el if?, con esto digo que debido a que me devuelve nulos, se debería de insertar nuevamente a la base de datos? o no seria tan necesario?.
GUI
Código
https://ibb.co/Gk1FcS4
Como pueden ver en la imagen tengo todos los campos con el cual se obtendrantodos los datos especificados por el usuario. Luego por medio de un JButtom abro un JFileChooser que me permite pasar la imagen a un JLabel y ajustarla a su tamaño.
Buttom(Aceptar)
Codigo de mi Buttom (Aceptar):
Código
Nom = this.NomCate.getText(); Descrip = this.DescripMain.getText(); if (imagenCateP == null) { } else{ ImagenPrincipalPR Creacion = new ImagenPrincipalPR(Nom, Descrip, imagenCateP); Base.InsertoImagen(Creacion); }
Cabe mencionar que todos las variables manejadas en este codigo (Buttom) son globales, (La variable imagenCateP) devuelve la path, por medio del JFileChooser que declare anteriormente. Como quiero asegurarme que la imagen sea insertada hago mi validacion antes de darle al click al buttom, si no es nulo, llamo al objeto Base, luego al constructor de mi clase y le paso el objeto al metodo explicado arriba.
Al momento de ejecutar y darle al bottom me tira la excepcion conocida por todos..
Código
at VentanaDeCreacion.AceptarActionPerformed(VentanaDeCreacion.java:213) at VentanaDeCreacion.access$400(VentanaDeCreacion.java:21) at VentanaDeCreacion$4.actionPerformed(VentanaDeCreacion.java:119) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109) at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233) at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233) at VentanaDeCreacion$6.run(VentanaDeCreacion.java:265) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
He intentado de todo, cambiar, establecer, quitar, poner, colocar, probar en la consola y la verdad no se que mas hacer.
Tampoco me voy a excusar con decir: "estoi empezando", por el poco tiempo que llego en java (y esto va para todo lenguaje) se les debe dedicar tiempo y con las practicas tratar de resolver los errores que surgen. Pero algo de orientacion no esta demas .
Gracias por leer y espero no haberte aburrido con tanto texto.