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

Problema con conexion con MySQL

Estas en el tema de Problema con conexion con MySQL en el foro de Java en Foros del Web. Uso glassfish tengo configurado MySQL(localhost:4848) como Recursos/JDBC/Conjunto de conexiones/MySQLPool url: jdbc:mysql://:3306/java Recursos/JDBC/Recurso JDBC/ Nombre JNDI: jdbc/java Nombre de conjunto: MySQLPool Hago un ping y me ...
  #1 (permalink)  
Antiguo 27/07/2009, 19:34
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Fe, Capital
Mensajes: 38
Antigüedad: 15 años
Puntos: 0
Pregunta Problema con conexion con MySQL

Uso glassfish tengo configurado MySQL(localhost:4848) como

Recursos/JDBC/Conjunto de conexiones/MySQLPool
url: jdbc:mysql://:3306/java

Recursos/JDBC/Recurso JDBC/
Nombre JNDI: jdbc/java
Nombre de conjunto: MySQLPool

Hago un ping y me da correcto.

coneccion a la base de datos

Código:
	private DataSource data;
	private MusicaSQL sql = new MusicaSQL(); 
		
	
	private DataSource getData() {
		if (data == null) {
			try {
				Context ctx = new InitialContext();
				data = (DataSource) ctx.lookup("jdbc/java");
			} catch (NamingException ne) {
				ne.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return data;
	}

	public List<Musica> getAllMusica() {
		Connection conn;
		ArrayList<Musica> allMusica = new ArrayList<Musica>();
		try{
			conn = getData().getConnection();
			PreparedStatement ps = conn.prepareStatement(sql.getSELECT_MUSICA_ALL());
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				Musica musica = new Musica();

				musica.setNombre(rs.getString("NOMBRE"));
				musica.setArtista(rs.getString("ARTISTA"));
				musica.setAlbum(rs.getString("ALBUM"));
				musica.setGenero(rs.getString("GENERO"));
				musica.setDuracion(rs.getInt("DURACION"));
				musica.setAnio(rs.getInt("ANIO"));
				musica.setIdmusica(rs.getInt("ID_MUSICA"));
				allMusica.add(musica);
			}
			rs.close();
			ps.close();
			conn.close();
		}catch(SQLException e){
			System.out.println(e.getMessage());
		}
		return allMusica;
	}

MusicaSQL

Código:
private static final String INSERT_MUSICA = "INSERT INTO musica (NOMBRE, ARTISTA, ALBUM, GENERO, DURACION, ANIO) VALUES (?,?,?,?,?,?)";
	private static final String UPDATE_MUSICA = "UPDATE musica SET NOMBRE=?, ARTISTA=?, ALBUM=?, GENERO=?, DURACION=?, ANIO=? WHERE ID_MUSICA = ?";
	private static final String DELETE_MUSICA = "DELETE FROM musica WHERE ID_MUSICA = ?"; 
	private static final String SELECT_MUSICA_BY_ID = " SELECT NOMBRE, ARTISTA, ALBUM, GENERO, DURACION, ANIO FROM TABLE_IN_JAVA WHERE ID_MUSICA = ? ";
	private static final String SELECT_MUSICA_ALL = "SELECT NOMBRE, ARTISTA, ALBUM, GENERO, DURACION, ANIO, ID_MUSICA FROM TABLE_IN_JAVA";
Servlet que accede a las clases que conectan a la base de datos

Código:
protected void doGet(...)...{
		if (request.getAttribute("musicas").equals("null")){
			request.setAttribute("musicas", new Musica());
		}else{
			request.setAttribute("musicas", music.getAllMusica());
		}
		
		request.getRequestDispatcher("paginas/musica.jsp").forward(request, response);
	}

	protected void doPost(...)...{
		Musica musica = new Musica();
		try{
			//Seteo los valores
			musica.setNombre(request.getParameter("nombre"));
			musica.setArtista(request.getParameter("artista"));
			musica.setAlbum(request.getParameter("album"));
			musica.setGenero(request.getParameter("genero"));
						musica.setDuracion(Integer.parseInt(request.getParameter("duracion")));
			musica.setAnio(Integer.parseInt(request.getParameter("anio")));
			musica.setIdmusica(idmusica);
			
			music.guardarMusica(musica);
			
			//request.setAttribute("id", musica.getIdmusica());
		}catch(Exception e){}
		doGet(request,response);
}
Cuando coloco esto en el metodo doget

Código:
if (request.getAttribute("musicas").equals("null")){
	request.setAttribute("musicas", new Musica());
}else{
	request.setAttribute("musicas", music.getAllMusica());
}
Me muestra

Código:
Estado de HTTP 500 - 
--------------------------------------------------------------------------------
type Informe de excepción

Mensaje

Descripción El servidor encontró un error interno () que impide satisfacer la solicitud.

Excepción java . lang . NullPointerException
Parece que no puedo acceder a la base de datos, porque me muestra null cuando quiero mostrar todas las musicas.
  #2 (permalink)  
Antiguo 29/07/2009, 02:01
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Problema con conexion con MySQL

Wenas

Coloca trazas a ver donde te da exactamente el nullpointerexception.

Saludos.
  #3 (permalink)  
Antiguo 29/07/2009, 03:10
 
Fecha de Ingreso: julio-2009
Mensajes: 24
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Problema con conexion con MySQL

Quiza me equivoco pero cuando haces esto:

Código PHP:
if (request.getAttribute("musicas").equals("null")){
    
request.setAttribute("musicas", new Musica());
}else{
    
request.setAttribute("musicas"music.getAllMusica());

si request.getAttribute("musicas") es null, al intentar hacer .equals... te saltaría un NullPointerException. Quiza podrias intentar guardartelo en una variable y comprobar que no sea null antes de hacer el equals...

Algo asi:

Código PHP:
musicas request.getAttribute("musicas");

if (
musicas == null){
    
request.setAttribute("musicas", new Musica());
}else{
    
request.setAttribute("musicas"music.getAllMusica());

Saludos,

Nicte

Última edición por Nicte04; 30/07/2009 a las 01:08
  #4 (permalink)  
Antiguo 30/07/2009, 09:48
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Fe, Capital
Mensajes: 38
Antigüedad: 15 años
Puntos: 0
Pregunta Respuesta: Problema con conexion con MySQL

Lo de null fue porque no puedo acceder a la base de datos teniendo todo configurado bien

Influye si instalo MySQL en una ubicación distinta a la por defecto(C:/Archivo de programas/MySQL)?

Recursos/JDBC/Conjuntos de conexiones

databaseName: java
serverName: localhost
user: root
password: admin
url: jdbc:mysql://:3306/java

Obtengo el datasource en java

Código Java:
Ver original
  1. private DataSource getData() {
  2.         if (data == null) {
  3.             try {
  4.                 Context ctx = new InitialContext();
  5.                 data = (DataSource) ctx.lookup("jdbc/java");
  6.             } catch (NamingException ne) {
  7.                 ne.printStackTrace();
  8.             } catch (Exception e) {
  9.                 e.printStackTrace();
  10.             }
  11.         }
  12.         return data;
  13.     }

No me muetra la informacion de la base de datos

No encuentro el problema
  #5 (permalink)  
Antiguo 31/07/2009, 00:29
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Problema con conexion con MySQL

Si te da null no tienes todo configurado bien.

Sabes si sales por namingexception?? te lo digo porque namingexception tiene metodos para averiguar la causa.

Saludos.

PD. No creo que influya que tengas mysql en otra ruta a la de por defecto.
  #6 (permalink)  
Antiguo 04/08/2009, 17:12
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Fe, Capital
Mensajes: 38
Antigüedad: 15 años
Puntos: 0
Pregunta Respuesta: Problema con conexion con MySQL

No logro solucionarlo

Trato de tener los registros de la base de datos y no puedo, uso lo siguiente

Código java:
Ver original
  1. public List<Object> getAll() {
  2.             ArrayList<Object> allMusica = new ArrayList<Object>();
  3.             String usuario = "root";
  4.             String password = "admin";
  5.  
  6.             String host = "localhost";
  7.             String puerto = "3306";
  8.             String database = "java";
  9.  
  10.             String driver = "com.mysql.jdbc.Driver";
  11.  
  12.             String ulrjdbc = "jdbc:mysql://" + host + ":" + puerto + "/" + database;
  13.  
  14.             Connection connection = null;
  15.             try {
  16.                 Class.forName(driver).newInstance();
  17.                 connection = DriverManager.getConnection(ulrjdbc, usuario, password);
  18.  
  19.                
  20.                 PreparedStatement ps = connection.prepareStatement("SELECT * FROM MUSICA");
  21.                 ResultSet rs = ps.executeQuery();
  22.                 while(rs.next()){
  23.                     Musica o = new Musica();
  24.                     o.setAlbum("album");
  25.                     allMusica.add(o);
  26.                 }
  27.                 rs.close();
  28.                
  29.                
  30.  
  31.             } catch (Exception e) {
  32.                
  33.                 e.printStackTrace();
  34.             } finally {
  35.                 if (connection != null) {
  36.                     try {
  37.                         connection.close();
  38.                     } catch (SQLException e) {
  39.                     }
  40.                 }
  41.             }
  42.             return allMusica;
  43.         }

Cuando llamo a este método desde un servlet me da una lista null.
Y si creo un metodo para guardar, eliminar, ... no me guarda ni me elimina datos de la base de datos

No se con que te referís error namingexception.

En mysql por consola

Código:
mysql> use java
Database changed

mysql> show tables;
+----------------+
| Tables_in_java |
+----------------+
| musica         |
+----------------+
2 rows in set (0.13 sec)

mysql> select * from musica;
+-----------+--------+---------+-------+--------+----------+------+
| ID_MUSICA | NOMBRE | ARTISTA | ALBUM | GENERO | DURACION | ANIO |
+-----------+--------+---------+-------+--------+----------+------+
|         1 | nombre | a       | a     | g      |       10 |   10 |
+-----------+--------+---------+-------+--------+----------+------+
1 row in set (0.08 sec)
El conector de mysql lo tengo cargado

Uso los patrones bussinessDelegate y facade
Como servidor uso glassfish

Última edición por PanchoJ; 04/08/2009 a las 17:19
  #7 (permalink)  
Antiguo 05/08/2009, 03:22
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Problema con conexion con MySQL

No es por nada, pero mysql es case-sensitive. Distingue entre mayusculas y minusculas.

Es decir.

select * from musica NO ES IGUAL A select * from MUSICA

Saludos.
  #8 (permalink)  
Antiguo 05/08/2009, 09:50
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Fe, Capital
Mensajes: 38
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema con conexion con MySQL

Parace que si coloco select * from MUSICA o select * from musica, me muestra null de cualquier forma.
Esta bien el codigo? Yo hice un proyecto en eclipse nuevo y coloque este código

Estoy provando creo que encontre el error

Última edición por PanchoJ; 05/08/2009 a las 13:48
  #9 (permalink)  
Antiguo 06/08/2009, 10:29
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Fe, Capital
Mensajes: 38
Antigüedad: 15 años
Puntos: 0
Respuesta: Problema con conexion con MySQL

Lo pude resolver era que me faltaba instaciar una clase, me falto definir un constructor en "music" que instancie la clase a la cual hace referencia Gracias
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 06:50.