Java - Error java.lang.NullPointerException

 
Vista:
sin imagen de perfil

Error java.lang.NullPointerException

Publicado por David (1 intervención) el 14/03/2014 06:56:43
Hola a todos es la primera vez que hago un post; necesito algo de ayuda con el siguiente código cuando los ejecuto en el momento que intenta almacenar el primer dato de la consulta me saca error.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Exception in thread "main" java.lang.NullPointerException
	at datos.Usuarios.consultarTodo(Usuarios.java:63)
public void consultarTodo()  {
		ResultSet Resultado;
		String[][] Data = null;
		Resultado = Conexion.getQuery("select * from usuarios");
 
				try {
					while(Resultado.next()){
					Data[I][0]=Resultado.getString("Id_usuario");
					Data[I][1]=Resultado.getString("Nombre");
					Data[I][2]=Resultado.getString("Usuario");
					Data[I][3]=Resultado.getString("Contraseña");
 
					}
 
 
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
Lo que quiero es almacenar los resultados de cada campo en Data de antemano muchas gracias por la ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Borja

Error java.lang.NullPointerException

Publicado por Borja (23 intervenciones) el 17/03/2014 00:28:56
Así de primeras, lo que veo es que a Data no les has dado ningun tamaño, así que cuando intentas acceder a cualquiera de las posiciones para asignarle un valor dá como resultado este NullPointerException tan querido por todos.

Lo que deberias hacer es asignarle un tamaño al declaralo, Pero dado que no sabes que tamaño vas a tener puedes hacer dos cosas.
1 -
usar una estructura mutable que no sea un array
por ejemplo ArrayList te permitiria ir augmentando el tamaño del array dinamicamente mediante la llama 'add'.
por ejemplo de esta manera

List<String> Data = new ArrayList<String[4]>();

y luego en el while:

String dataAux = new String[4];
dataAux[I][0] = ....

Data.add(dataAux);

2- Declara un array de string muy grande, y usa un contador para ir contando cuantos datos te llegan y luego la redimensionas (aunque es un metodo ineficiente en tiempo y en espacio), por tanto te recomiendo el 1.

PD: no he podido probar, a si que si falla lo que te digo no te enfades mucho, debo haber cometido algun pequeño error, pero la idea es esta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar