Foros del Web » Programación para mayores de 30 ;) » Java »

Base de datos con java

Estas en el tema de Base de datos con java en el foro de Java en Foros del Web. Buenas noches... Estoy haciendo un proyecto con java que captura los datos de textbox y los envia a una base de datos, pero no he ...
  #1 (permalink)  
Antiguo 03/10/2011, 23:22
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Base de datos con java

Buenas noches... Estoy haciendo un proyecto con java que captura los datos de textbox y los envia a una base de datos, pero no he podido hacer que funcione la funcion de insertar (obviamente, tampoco las de actualizar y modificar)...

import paquete.conectaramysql

public class Ventana extends javax.swing.JFrame {
private PreparedStatement insertar;
private ConectarMySQL conectar;
.... codigo....

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
if(insertar == null){
insertar = conectar.getConexion().prepareStatement("INSERT INTO basededatos.tabla VALUES (?,?,?,?,?,?,?)");
}
insertar.setInt(1, new Integer(jTextField1.getText()));
insertar.setString(2, jTextField2.getText());
insertar.setString(3, jTextField3.getText());
iinsertar.setString(4, jTextField4.getText());
insertar.setString(5, jTextField5.getText());
insertar.setString(6, jTextField6.getText());
insertar.setString(7, jTextField7.getText());
insertar.execute();

...codigo....


Me gustaria que me dijeran que eston haciendo mal y que podria corregir.. muchas gracias
  #2 (permalink)  
Antiguo 04/10/2011, 00:48
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Base de datos con java

Supongo que todo eso va dentro de un try-catch y que si no funciona da una excepción. Ayudaría muchísimo que pusieras la excepción y en qué línea exacta salta.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 04/10/2011, 01:27
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Respuesta: Base de datos con java

Yo creo q este trozo de codigo esta mal:
if(insertar == null){
insertar = conectar.getConexion().prepareStatement("INSERT INTO basededatos.tabla VALUES (?,?,?,?,?,?,?)");
}
ese ultimo corchete deberia ir despues del insertar.execute();

Saludos
__________________
Oye los consejos de todo el mundo, y sigue el tuyo.
Si te han ayudado deja un karma y si no te han ayudado pero vez util la información tb deja un karma xD
Sirdaiz
  #4 (permalink)  
Antiguo 04/10/2011, 04:46
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Base de datos con java

Cita:
Iniciado por chuidiang Ver Mensaje
Supongo que todo eso va dentro de un try-catch y que si no funciona da una excepción. Ayudaría muchísimo que pusieras la excepción y en qué línea exacta salta.

Se bueno.
Si, esta dentro de un bloque try catch... Y al momento de llenar todos los campos y darle a aceptar, me dice Error de registro: null
  #5 (permalink)  
Antiguo 04/10/2011, 04:49
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Base de datos con java

Saca la excepción con e.printStackTrace(), escribe aquí lo que sale y di cual es exactamente la línea que dice la excepción que es donde salta. Ese "Error de registro"..... es texto tuyo ¿verdad?.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 04/10/2011, 04:52
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Base de datos con java

Cita:
Iniciado por sirdaiz Ver Mensaje
Yo creo q este trozo de codigo esta mal:
if(insertar == null){
insertar = conectar.getConexion().prepareStatement("INSERT INTO basededatos.tabla VALUES (?,?,?,?,?,?,?)");
}
ese ultimo corchete deberia ir despues del insertar.execute();

Saludos
Lo intente pero no sirvio... Gracias por la ayuda
  #7 (permalink)  
Antiguo 04/10/2011, 04:58
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Respuesta: Base de datos con java

Entonces aca la excepcion con el catch, o bien e.printStackTrace(), o con system.out.println(e)

Saludos
__________________
Oye los consejos de todo el mundo, y sigue el tuyo.
Si te han ayudado deja un karma y si no te han ayudado pero vez util la información tb deja un karma xD
Sirdaiz
  #8 (permalink)  
Antiguo 04/10/2011, 06:26
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Base de datos con java

En el catch con e.printStackTrace().

El system.out.println(e) no sirve, da poca información.
__________________
Apuntes Java
Wiki de Programación
  #9 (permalink)  
Antiguo 04/10/2011, 08:53
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Base de datos con java

Cita:
Iniciado por chuidiang Ver Mensaje
Saca la excepción con e.printStackTrace(), escribe aquí lo que sale y di cual es exactamente la línea que dice la excepción que es donde salta. Ese "Error de registro"..... es texto tuyo ¿verdad?.

Se bueno.

Si, ese mensaje de error es mio... Disculpa la ignoracia, pero no se como hacerlo... Yo lo tengo asi

catch(Exception ex){
JOptionPane.showMessageDialog(null, "Error de Registro: "+ ex.getMessage(), "ERROR", JOptionPane.ERROR_MESSAGE);
}

No se donde ponerla y como observar los resultados.... Muchas gracias
  #10 (permalink)  
Antiguo 04/10/2011, 09:13
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Base de datos con java

Código java:
Ver original
  1. catch (Exception e) {
  2.    e.printStackTrace();
  3. }

Deberias verlo en la salida de texto de tu programa. Si usas un IDE (netbeans, eclipse) saldrá en la ventana de consola.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #11 (permalink)  
Antiguo 04/10/2011, 09:33
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Base de datos con java

Cita:
Iniciado por chuidiang Ver Mensaje
Código java:
Ver original
  1. catch (Exception e) {
  2.    e.printStackTrace();
  3. }

Deberias verlo en la salida de texto de tu programa. Si usas un IDE (netbeans, eclipse) saldrá en la ventana de consola.

Se bueno.
Estoy utilizando netbeans... No se si te refieres a la pestaña output... En dado caso de que sea asi, me sale esto

java.lang.NullPointerException
at AplicacionGrafica.CrearNota.BotonAceptarINActionPe rformed(CrearNota.java:178)
at AplicacionGrafica.CrearNota.access$100(CrearNota.j ava:22)
at AplicacionGrafica.CrearNota$2.actionPerformed(Crea rNota.java:81)
at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed (AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.jav a:6289)
at javax.swing.JComponent.processMouseEvent(JComponen t.java:3267)
at java.awt.Component.processEvent(Component.java:605 4)
at java.awt.Container.processEvent(Container.java:204 1)
at java.awt.Component.dispatchEventImpl(Component.jav a:4652)
at java.awt.Container.dispatchEventImpl(Container.jav a:2099)
at java.awt.Component.dispatchEvent(Component.java:44 82)
at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:4168)
at java.awt.Container.dispatchEventImpl(Container.jav a:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478 )
at java.awt.Component.dispatchEvent(Component.java:44 82)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.j ava:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectio nPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectio nPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectio nPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 614)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1046)
at java.awt.Dialog$3.run(Dialog.java:1098)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1096)
at java.awt.Component.show(Component.java:1585)
at java.awt.Component.setVisible(Component.java:1537)
at java.awt.Window.setVisible(Window.java:842)
at java.awt.Dialog.setVisible(Dialog.java:986)
at AplicacionGrafica.VentanaPrincipal$12.run(VentanaP rincipal.java:198)
at java.awt.event.InvocationEvent.dispatch(Invocation Event.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.j ava:642)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectio nPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 612)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:122)
  #12 (permalink)  
Antiguo 04/10/2011, 09:48
 
Fecha de Ingreso: septiembre-2011
Mensajes: 1
Antigüedad: 12 años, 7 meses
Puntos: 0
Respuesta: Base de datos con java

No se si ya solucionaste tu problema pero, a lo que veo tu problema esta en conectar.getConexion(), ya que tu variable conectar la defines como null y pues no puedes dar un .getConexion de una variable nula, ademas tu trycatch pon mejor un SQLException.
  #13 (permalink)  
Antiguo 04/10/2011, 09:56
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Base de datos con java

Cita:
Iniciado por ing_oscarayala Ver Mensaje
No se si ya solucionaste tu problema pero, a lo que veo tu problema esta en conectar.getConexion(), ya que tu variable conectar la defines como null y pues no puedes dar un .getConexion de una variable nula, ademas tu trycatch pon mejor un SQLException.
La variable conectar no esta definida como null en ningun momento... Explicate mejor lo de sqlexception... muchas gracias
  #14 (permalink)  
Antiguo 04/10/2011, 10:00
 
Fecha de Ingreso: enero-2011
Mensajes: 47
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: Base de datos con java

Puedes poner el codigo de tu clase ConectarMySQL. Gracias.

Para mi que ahi esta el problema.
  #15 (permalink)  
Antiguo 04/10/2011, 10:03
 
Fecha de Ingreso: enero-2011
Mensajes: 47
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: Base de datos con java

El NullPointerException que obtienes es debido a que intentas llamar metodos de un objeto que esta null.

Cita:
Iniciado por dragonfire256 Ver Mensaje
La variable conectar no esta definida como null en ningun momento... Explicate mejor lo de sqlexception... muchas gracias
Código Java:
Ver original
  1. private ConectarMySQL conectar;

Si te fijas en realidad si esta null, porque no haces algo como

Código Java:
Ver original
  1. private ConectarMySQL conectar = new ConectarMySQL();

Prueba eso.
  #16 (permalink)  
Antiguo 04/10/2011, 10:05
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Base de datos con java

Cita:
Iniciado por hkadejo Ver Mensaje
Puedes poner el codigo de tu clase ConectarMySQL. Gracias.

Para mi que ahi esta el problema.

En realidad no se llama conectarmysql... Los nombres que puse son genericos... En realidad se llama DataBase


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package BaseDatos;

import java.sql.*;

public class DataBase {
private String driver;
private String strconexion;
private String usuario;
private String contraseña;
private Connection con;
private static DataBase db=null;

public static DataBase getInstance()throws ClassNotFoundException,SQLException{
if(db==null)
db=new DataBase();
return db;
}

public DataBase()throws ClassNotFoundException,SQLException{
this.driver="com.mysql.jdbc.Driver";
this.strconexion="jdbc:mysql://localhost/tesis";
this.usuario="root";
this.contraseña="P@$$w0rd";
this.con=null;
cargarDriver();
establecerConexion();
}

private void cargarDriver()throws ClassNotFoundException{
Class.forName(this.driver);
}
private void establecerConexion() throws SQLException{
this.con=DriverManager.getConnection(this.strconex ion,this.usuario,this.contraseña);
}
public Connection getConexion() {

return con;
}

private void cerrar() throws SQLException{
if(this.con!=null && this.con.isValid(1)){
this.con.close();
}
}

public void finalize() throws Throwable{
super.finalize();
this.cerrar();
}
}
  #17 (permalink)  
Antiguo 04/10/2011, 10:48
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Base de datos con java

Bueno, falta la segunda parte que te comenté, indica cual es exactamente la línea CrearNota.java:178 que aparece en la excepción. Un NullPointer suele ser fácil de solucionar.

Ojo, si has estado tocando el código, saca nuevamente la excepción para ver ahora en qué línea cae con el código nuevo.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #18 (permalink)  
Antiguo 04/10/2011, 12:26
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Base de datos con java

Cita:
Iniciado por hkadejo Ver Mensaje
El NullPointerException que obtienes es debido a que intentas llamar metodos de un objeto que esta null.



Código Java:
Ver original
  1. private ConectarMySQL conectar;

Si te fijas en realidad si esta null, porque no haces algo como

Código Java:
Ver original
  1. private ConectarMySQL conectar = new ConectarMySQL();

Prueba eso.
Lo intente pero no me deja hacer la sentencia del constructor
  #19 (permalink)  
Antiguo 04/10/2011, 12:55
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Base de datos con java

Cita:
Iniciado por chuidiang Ver Mensaje
Bueno, falta la segunda parte que te comenté, indica cual es exactamente la línea CrearNota.java:178 que aparece en la excepción. Un NullPointer suele ser fácil de solucionar.

Ojo, si has estado tocando el código, saca nuevamente la excepción para ver ahora en qué línea cae con el código nuevo.

Se bueno.
Esta es la linea 178 del programa aunque con otros nombres de variables

insertar = conectar.getConexion().prepareStatement("INSERT INTO basededatos.tabla VALUES (?,?,?,?,?,?,?)");
  #20 (permalink)  
Antiguo 04/10/2011, 13:09
 
Fecha de Ingreso: septiembre-2011
Ubicación: Caracas
Mensajes: 240
Antigüedad: 12 años, 7 meses
Puntos: 9
Respuesta: Base de datos con java

hkadejo, el error que aparece en netbeans al tratar de colocar esa instruccion es

unreported exception java.lang.ClassNotFoundException;must be caught or declared to be thrown
  #21 (permalink)  
Antiguo 04/10/2011, 13:45
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Base de datos con java

Bueno, pues el error es o bien que conectar es null, o que conectar.getConexion() devuelve null.

Asegúrate de que has hecho un

conectar = new ConectarMySQL();

cuando se haya pulsado el botón. Puedes comprobarlo con un if

Código java:
Ver original
  1. if (conectar == null) {
  2.    conectar = new ConectarMySQL();
  3.    if (insertar==null) {
  4.       insertar = conectar.getConexion().prepareStatement("INSERT INTO basededatos.tabla VALUES (?,?,?,?,?,?,?)");
  5.    }
  6. }

Si te sigue saliendo el error, entonces es que getConexion() devuelve null. Supongo que dentro de esa clase/método ConectarMySQL/getConexion() intentas establecer la conexión con base de datos para devolverla... y ese intento también estará en un try-catch. Si es así, saca nuevamente la excepción que se produzca ahí dentro al intentar conectar con el e.printStackTrace().

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #22 (permalink)  
Antiguo 04/10/2011, 13:54
 
Fecha de Ingreso: enero-2011
Mensajes: 47
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: Base de datos con java

Cita:
Iniciado por dragonfire256 Ver Mensaje
hkadejo, el error que aparece en netbeans al tratar de colocar esa instruccion es

unreported exception java.lang.ClassNotFoundException;must be caught or declared to be thrown
Segun dices la clase no se llama ConectarMysql sino DataBase ¬¬' asi que evidentemente no la encontraras...ahora bien viendo tu codigo de DataBase para obtener una conexion debes hacer lo siguiente:

Código Java:
Ver original
  1. DataBase.getInstance().getConnection()

Para la proxima pon los nombres reales que estas usando en tu proyecto...

Última edición por hkadejo; 04/10/2011 a las 14:01

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:48.