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

Problema con java.lang.NullPointerException

Estas en el tema de Problema con java.lang.NullPointerException en el foro de Java en Foros del Web. Bueno veran hace tiempo estuve pensando en buscar un foro de programacion y bueno es la primera vez que posteo por aki... El punto es ...
  #1 (permalink)  
Antiguo 12/07/2010, 19:03
Avatar de Difonia  
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Problema con java.lang.NullPointerException

Bueno veran hace tiempo estuve pensando en buscar un foro de programacion y bueno es la primera vez que posteo por aki...
El punto es que eh estado programando un jsp en el cual al momento de ingresar un proveedor me salga las lista de ellos... pero el problema es que siempre me sale el java.lang.NullPointerException
Miren la programacion del jsp

Código PHP:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@
page import="java.util.*,java.io.*,java.sql.*"%>
<%@
page import="Clases.*"%>
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd"
>

<
html>
    <
head>
        <
meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <
title>PRODUCTOS OFRECIDOS POR PROVEEDORES</title>
    </
head>
    <
body>
        <%!
        
Proveedor Prod=new Proveedor();
        
ResultSet tabla=null;
        
boolean Existe=false;
        
String condicion="";
        %>
        <
form action="ProductosXProveedores.jsp" method=post>
            <
table border="5" bordercolor="black" bgcolor="skyblue">
                <
tr>
                    <
td colspan="3" align="center">
                    
PPRODUCTOS OFRECIDOS POR PROVEEDORES</td>
                </
tr>
                <
tr>
                    <
td>Escribra nombre del proveedor:</td>
                    <
td><input type="text" name="filtro" size="70"></td>
                    <
td><input type="Submit" value="BUSCAR" name="buscar"></td>
                </
tr>
            </
table>
            <%
                if(
request.getParameter("buscar")!=null)
                {
                
condicion=request.getParameter("filtro").toString();
                try{
                
tabla=Prod.LeerTabla("F1","NombreCompañia="+condicion);
                
Existe=tabla.first();
                
out.println("<table border=5 bordercolor=black bgcolor=skyblue width=71.1% >");
                 
out.println("<tr>");
                 
out.println("<td>Nombre del producto</td>");
                 
out.println("<td>Precio Unitario</td>");
                 
out.println("<td>Pais de Origen</td>");
                 
out.println("<td>Ciudad</td>");
                 
out.println("</tr>");
                 while(
Existe)
                     {
                     
out.println("<tr>");
                     
out.println("<td>"+tabla.getString(2)+"</td>");
                     
out.println("<td>"+tabla.getDouble(3)+"</td>");
                     
out.println("<td>"+tabla.getString(4)+"</td>");
                     
out.println("<td>"+tabla.getString(5)+"</td>");
                     
out.println("</tr>");
                     
Existe=tabla.next();
                     }


                }catch(
Exception e){out.println("¬¬  "+e);}
 }
            %>

        </
form>
    </
body>
</
html
Este es de la Clase
Código PHP:
package Clases;

import java.sql.*;
import javax.swing.*;
public class 
Proveedor{
    
Connection cn;
    
Statement st;
    
ResultSet rs;
    public 
String sql;
    public 
Proveedor(){
        
cn null;
        
st null;
        
rs null;
        
String ruta "H:/POOBD/Neptuno.mdb";
        
String conexion "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+ruta;
        try{
            Class.
forName("sun.jdbc.odbc.JdbcOdbcDriver");
            
cn DriverManager.getConnection(conexion,"","");
            
st cn.createStatement(rs.TYPE_SCROLL_SENSITIVErs.CONCUR_UPDATABLE);
            
//JOptionPane.showMessageDialog(null, "Conexion Correcta");
        
}catch(Exception e){
            
JOptionPane.showMessageDialog(null"La conexion fracasó por: \n\n"+e.toString());
        }
    }
    public 
ResultSet LeerTabla(String tablaString filtro){
        
sql "Select * from "+tabla+" where "+filtro;
        try{
            
rs st.executeQuery(sql);
        }catch(
Exception e){}
        return 
rs;
    }

Aki unas imagenes de mi base de datos

http://img25.imageshack.us/i/93358252.jpg/
http://img37.imageshack.us/i/23970621.jpg/

Por FAvor diganme cual es mi error xq si asi como este me kedas varios por hacer...
Gracias
  #2 (permalink)  
Antiguo 13/07/2010, 02:10
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Problema con java.lang.NullPointerException

Wenas

Ese error da cuando estas accediendo a un objeto que es null y intentas, por ejemplo, hacer un toString(),

Tienes varios candidatos para ello. asi que lo primero que tienes que hacer es acotar el problema.

Empieza poniendo trazas y viendo donde se queda.

Código:
<%! 
System.out.println("1");
        Proveedor Prod=new Proveedor(); 
System.out.println("2");
        ResultSet tabla=null; 
        boolean Existe=false; 
System.out.println("3");
        String condicion=""; 
        %>
Tampoco estaria de mal que ya que capturas las excepciones, hicieras algo con ellas, así por ejemplo en la clase Proveedor
Código:
 public ResultSet LeerTabla(String tabla, String filtro){ 
        sql = "Select * from "+tabla+" where "+filtro; 
        try{ 
            rs = st.executeQuery(sql); 
        }catch(Exception e){
e.printStackTrace();
} 
        return rs; 
    }
__________________
--
NO. Tu problema no es urgente.

CCFVLS
  #3 (permalink)  
Antiguo 14/07/2010, 09:32
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con java.lang.NullPointerException

Buen consejo el de elAntoine. también puedes utilizar los debugger que te suministran las diferentes IDE´s y pon breakpoints en los puntos clave para observar el valor de las variables.

Saludos.
  #4 (permalink)  
Antiguo 14/07/2010, 17:54
Avatar de Difonia  
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con java.lang.NullPointerException

Plop!!!
Gracias Antonie...cuando dijiste sobre el String se me olvido que en teoria siempre tiene q ievar los ' .....
bueno ps... al final me funciono el programa gracias... era asi
Código PHP:
tabla=Prod.LeerTabla("F1","NombreCompañia='"+condicion+"'"); 
EDIT :
Ahora lo que tengo es otra pregunta... como hago para por ejemplo kiero llamar a una compañia pero solo por sus iniciales... mejor dicho.. q hago cuando son mas de 2 iniciales? con 1 me sale ... es facil... pero con 2?
Código PHP:
tabla=Prod.LeerTabla("F1","NombreCompañia like '"+condicion+"%'"); 
asi es para 1 pero para 2 ? esa teoria si no la tengo

Última edición por Difonia; 14/07/2010 a las 18:17
  #5 (permalink)  
Antiguo 15/07/2010, 02:00
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Problema con java.lang.NullPointerException

No entiendo el problema.

Estoy muy espeso.
__________________
--
NO. Tu problema no es urgente.

CCFVLS
  #6 (permalink)  
Antiguo 15/07/2010, 04:00
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con java.lang.NullPointerException

Yo tampoco he pillado del todo cual es tu problema.

Creo que se debe sobre todo a la utilización del like. No es apropiado utilizar like si lo que buscas es algo muy concreto.

Con like la sql te retorna todo lo que empiece por el contenido de la variable condición.

Si sabes cual es el nombre completo, utiliza condiciones de igualdad.

Por el contrario si lo que quieres hacer es un autocomplete o algo similar... con like, debes de ir concatenando a la cadena inicial para posteriormente consultarla contra la base de datos.

espero haberte ayudado, porque no entendí cual era tu pregunta...

suerte
  #7 (permalink)  
Antiguo 15/07/2010, 04:16
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Problema con java.lang.NullPointerException

Cita:
Iniciado por Denis127 Ver Mensaje
Creo que se debe sobre todo a la utilización del like. No es apropiado utilizar like si lo que buscas es algo muy concreto.
Por que no??

Cita:
Iniciado por Denis127 Ver Mensaje
Con like la sql te retorna todo lo que empiece por el contenido de la variable condición.
OJITO.

Código:
select * from autores where nombre like 'pepe'
No es lo mismo que

Código:
select * from autores where nombre like 'pepe%'
Saludos.
__________________
--
NO. Tu problema no es urgente.

CCFVLS
  #8 (permalink)  
Antiguo 15/07/2010, 04:27
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con java.lang.NullPointerException

De acuerdo, tienes toda la razón, pero lo más normal es utilizar like para comparación de cadenas utilizando patrones.

Yo creo que cada herramienta existe para un fín. Y el separar la utilización de cada una de ellas para diferentes ámbitos, ayuda a localizar errores de cualquier tipo.

Es mi humilde parecer.

xD
  #9 (permalink)  
Antiguo 15/07/2010, 04:37
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Problema con java.lang.NullPointerException

Entiendeme. No digo ni mucho menos que este mal. like puede dar problemas, sobre todo a la hora de acceder a las tablas, sin usar los indices.

Pero me ha parecido curiosa tu afirmacion.

Saludos.
__________________
--
NO. Tu problema no es urgente.

CCFVLS
  #10 (permalink)  
Antiguo 15/07/2010, 09:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con java.lang.NullPointerException

Desde luego que lo afirmé demasiado rotundamente, pero no contemplé el hecho que el patrón pudiera no ser un patrón.

xD

Así es como se aprende, cosas nuevas. xD

Saludos

PD: x cierto, a quedado aclarado tu problema Difonia?
  #11 (permalink)  
Antiguo 15/07/2010, 16:48
Avatar de Difonia  
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con java.lang.NullPointerException

Claro ps.. por eso dije con las iniciales....
por ejemplo con m... saldrian todos los que empiezan con m....
pero lo que io kiero es por ejemplo si se llama Saga Falabella... como hago para que al momento de buscar sea solo poniendo s y f ....
  #12 (permalink)  
Antiguo 16/07/2010, 01:17
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Respuesta: Problema con java.lang.NullPointerException

AAAAAAAAAAAAAa Vale, para ese caso creo que lo mas sencillo es usar like y sus comodines.

Saludos
__________________
--
NO. Tu problema no es urgente.

CCFVLS
  #13 (permalink)  
Antiguo 16/07/2010, 09:18
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con java.lang.NullPointerException

quizás tb te puede venir bien utilizar expresiones regulares, mediante la sentencia REGEXP:

http://dev.mysql.com/doc/refman/5.0/...-matching.html
  #14 (permalink)  
Antiguo 16/07/2010, 11:00
Avatar de Wayern  
Fecha de Ingreso: septiembre-2008
Ubicación: Aguascalientes
Mensajes: 65
Antigüedad: 15 años, 7 meses
Puntos: 4
Exclamación Respuesta: Problema con java.lang.NullPointerException

Cita:
Iniciado por Difonia Ver Mensaje
Claro ps.. por eso dije con las iniciales....
por ejemplo con m... saldrian todos los que empiezan con m....
pero lo que io kiero es por ejemplo si se llama Saga Falabella... como hago para que al momento de buscar sea solo poniendo s y f ....
Bueno, dependiendo exactamente de que es lo que busques lo veo más o menos comlicado. Si quieres que te regrese todas aquellas empresas que contengan una S y una F sin importar si estan juntas o no, ni tampoco la posición en donde estén o mayúsculas y minúsculas, puedes utilizar un par de likes:
Código:
select * from empresa 
where upper(nom_empresa) like ('%S%') 
and upper(nom_empresa like) ('%F%')
Eso te devolvera todas las empresas con S y F... "Saga Falabella", "Safari Tour", "Aficionados INC" y demás cosas así. No creo que sea lo que deseas.
Si lo que deseas es que cada inicial sea la primera letra de cada palabra que forma el nombre de la empresa entonces te toca usar funciones de cadena como susbtr, chr y obviamente el like, pero ahora así: like ('S%').
No sé que BD estes usando, pero la liga que aquí te dejo es para hacerlo con oracle. Me imagino que los otros gestores tienen unas parecidas sino es que iguales.
Suerte .
http://ora.u440.com/cadena/
  #15 (permalink)  
Antiguo 17/07/2010, 10:03
Avatar de Difonia  
Fecha de Ingreso: julio-2010
Mensajes: 11
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con java.lang.NullPointerException

Bueno actualmente solo estoy usando Office.. Access... pero tambien eh estado aprendiendo a utilizar SQL server
  #16 (permalink)  
Antiguo 21/07/2010, 05:43
 
Fecha de Ingreso: febrero-2010
Mensajes: 128
Antigüedad: 14 años, 2 meses
Puntos: 3
Respuesta: Problema con java.lang.NullPointerException

Puedes compatibilizar un lenguaje de tipo SQL contra una base de datos de tipo access. No hay ningún problema en eso...

Etiquetas: jsp-servlets
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 18:56.