Error: NullPointerAccess: La variable "" sólo puede ser null en esta ubicación
Estoy creando un servicio web que consulta mi base de datos y devuelve una lista del objeto en la base de datos. Tengo el error: NullPointerAccess: La variable "varname" sólo puede ser nulo en esta ubicación. No importa donde pongo la variable, recibo las mismas advertencias. No importa lo que pongo dentro de la variable, devuelve null. A continuación se muestra el método que se produce en:
public List<Contacts> getUsers() { String test = null; String username = "root"; String password = "ticket"; String tablename = "users"; String fieldname = "*"; String query = "SELECT " + fieldname + " FROM " + "android." + tablename + ";"; Contacts cont = new Contacts(); List<Contacts> lstc = null; /* this chnk of code can appear more or less verbatim */ /* in your database apps (including JSPs) */ String url = "jdbc:mysql://"my IP address":3306/android"; try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection con = DriverManager.getConnection(url, username, password); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()){ if (!(rs.getString("username") == null)){ cont.setUsername(rs.getString("username")); } if (!(rs.getString("location") == null)){ cont.setLocation(rs.getString("location")); } if (!(rs.getString("updated_at") == null)){ cont.setUpdated_at(rs.getDate("updated_at")); } if (!(rs.getString("idUsers") == null)){ cont.setId(rs.getInt("idUsers")); } } rs.close(); stmt.close(); con.close(); }catch(Exception e){ test = e.toString(); } lstc.add(cont); //THIS IS THE VARIABLE THAT IS GIVING THE WARNINGS test = "blahbadslf"; return lstc; }
La variable que está recibiendo las advertencias es mi variable List lstc. Cuando intento agregar un objeto a la lista consigo los errores. Cualquier ayuda sería muy apreciada. Aquí está la clase por si acaso:
- Obtener longitud desconocidaHttpInputStream al obtener InputStream de HttpURLConnection en android
- Cliente Android para servicio web REST con seguridad básica
- Pase y reciba el objeto JSON de Jersey Resftul webservice desde android
- ¿Cómo llamar a un servicio web RESTful de Android?
- Desarrollador web visual Servicio web en depuración HTTP / 1.1 400 Solicitud incorrecta
public class Contacts{ private int id; private String username; private String location; private Date updated_at; public void setId(int id) { this.id = id; } public int getId() { return id; } public void setUsername(String username) { this.username = username; } public String getUsername() { return username; } public void setLocation(String location) { this.location = location; } public String getLocation() { return location; } public void setUpdated_at(Date updated_at) { this.updated_at = updated_at; } public Date getUpdated_at() { return updated_at; }
}
¡Gracias!
- Aplicación de Android CursorWindow error de memoria
- Necesidad de transferir el archivo .apk mediante webservice
- Cómo llamar a un json webservice a través de android
- Ksoap2 Android - ¿cómo especificar un espacio de nombres para las propiedades secundarias de un objeto complejo?
- Retrofit 2: enviar archivos con el objeto json
- Cómo rellenar el diseño de la tabla con la cadena JSON
- ¿Pasar datos a los servicios web .net y obtener resultados?
- ¿Qué authTokenType significa exactamente?
Usted recibe ese mensaje porque tiene:
List<Contacts> lstc = null;
Querías decir:
List<Contacts> lstc = new ArrayList<Contacts>();
Por cierto
Tienes un segundo error:
Contacts cont = new Contacts(); // you only create one of these
Mejor:
while (rs.next()){ Contacts cont = new Contacts(); // move to within the loop so one is created for every row in the result set
Hay esto:
List<Contacts> lstc = null;
Y entonces ningún objeto es asignado a lstc
. Fallar 🙁
Considere una new ArrayList<Contacts>()
algún lugar meaninful (como en la declaración).
No instanciaste la lista. La lista sigue estando nula cuando desea acceder a ella.
Así que debes usar eso:
List<Contacts> lstc = new List<Contacts>();