Java - NullPointerException

 
Vista:

NullPointerException

Publicado por DER FUHRER (3 intervenciones) el 11/11/2005 22:56:14
HOLA GENTE! les explico el problema q tengo...
he creado una clase control q en el metodo Login hace esto:
SQLConnection.Open(cn,ConnectionString, dataBaseName, SQLUser, SQLPassword);
//esta linea devuelve un obj Conection
mvarUser.UserID(mvarUser.validateAccount(userName, password, cn ));
//y esta valida la cuenta y pwd (usando el obj
// connection abierto)

El problema es q en la 2da linea el objecto conexion ya no está abierto y no se porqué el objeto se cierra al salir del metodo de conexion, el codigo de mi metodo de conexion es el siguiente:

public static boolean Open(Connection cn, String url, String DBName,
String user, String password) {
boolean value = false;
SQLServerDriver SQlcn = new SQLServerDriver();
try {
cn = DriverManager.getConnection(url, user, password);
cn.setCatalog(DBName);
value = true;
} catch (SQLException e) {
System.out.println(e.getMessage());
value = false;
}
return value;
}

POrfa... alguien ilumineme!!!
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
sin imagen de perfil

RE:NullPointerException

Publicado por chuidiang (950 intervenciones) el 12/11/2005 14:09:50
Hola:

En java hay muchos tópicos falsos como que no hay punteros y que todo se pasa por referencia. La realidad es que en java TODO son punteros, cualquier variable (otro tema es que no se pone un asterisco delante como en C) y TODO se pasa por copia. Puedes ver esto más detallado en http://chuidiang.blogspot.com/2005/09/los-punteros-de-java.html

Con esto te quiero decir que tu variable cn fuera del método es un puntero (que en principio es null si así lo has inicializado). Se pasa por copia al método Open(). La variable (puntero) cn dentro de open es una copia de la de fuera. Cuando le asignas la conexión, la de fuera ni se inmuta, sigue apuntando a null.

Para devolver algo en un método es mejor que hagas un return o bien que pasee por parmámetro el objeto ya creado y que dentro del método lo rellenes. En tu caso de Connection, esta segunda posiblidad no te vale. Para que tu método funcione bien, debería devolver la Connection y asignarla fuera

cn = SQLConnection.Open(ConnectionString, dataBaseName, SQLUser, SQLPassword);

Se bueno.
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