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

ayudita con error en programa java

Estas en el tema de ayudita con error en programa java en el foro de Java en Foros del Web. Quien me podria ayudar en este programa por fa pues soy novato. Haber el programa debe leer de teclado y actualizar la base de datos ...
  #1 (permalink)  
Antiguo 21/04/2009, 17:06
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
ayudita con error en programa java

Quien me podria ayudar en este programa por fa pues soy novato.
Haber el programa debe leer de teclado y actualizar la base de datos en excel
curso1.mdb.Este es el programa y al final DEL programa escribo el error al compilarlo:

import java.io.*;
import java.sql.*;
import java.net.*;

public class TecladoA {
public static void main(String[] args){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
System.out.println(e.getMessage());
}
try{
Connection conexion = DriverManager.getConnection("jdbc:odbc:curso1","jd bc","jdbc");
Statement estatuto = conexion.createStatement();
String Matricula="";
InputStreamReader entrada = new InputStreamReader(System.in);
BufferedReader teclado = new BufferedReader(entrada);
System.out.println("Teclea Matricula:");
System.out.println("Teclea q y <enter> para terminar");
while(Matricula.compareTo("q")!=0){
Matricula = teclado.readLine();
System.out.println(">> "+Matricula);
}
}catch(IOException e){
System.out.println(e.getMessage());
}
try{
teclado.close();
entrada.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
try{


conexion.close();
}
catch(SQLException e){
System.out.println(e.getMessage());
}
}
}

Error:
TecladoA.java:28: cannot find symbol
symbol : variable teclado
location: class TecladoA
GRACIAS MUCHACHOS ESTARE ALTAMENTE AGRADECIDO.
QUIERO APRENDER
  #2 (permalink)  
Antiguo 21/04/2009, 17:27
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayudita con error en programa java

El problema es que estás declarando la variable teclado dentro del bloque try (el primero), entonces esa variable teclado sólo existen dentro de ese bloque.

Cuando luego, más abajo, intentas hacer teclado.close() te da error diciendo que no conoce esa variable teclado. Y es porque teclado sólo existe dentro del bloque donde la declaras.
  #3 (permalink)  
Antiguo 21/04/2009, 19:11
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

Cita:
Iniciado por venkman Ver Mensaje
El problema es que estás declarando la variable teclado dentro del bloque try (el primero), entonces esa variable teclado sólo existen dentro de ese bloque.

Cuando luego, más abajo, intentas hacer teclado.close() te da error diciendo que no conoce esa variable teclado. Y es porque teclado sólo existe dentro del bloque donde la declaras.
  #4 (permalink)  
Antiguo 21/04/2009, 19:14
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

Hola Venkman:

si,lo que pasa es ke toca declarar esa variable ahi en el primer try,pues tengo otro programa
muy parecido a este y compila y ejecuta muy bien.
Creo que ahí no esta el error me parece no sé. Quiero que si puedes compilarlo pues gracias.
Yo use JGRASP.
  #5 (permalink)  
Antiguo 21/04/2009, 21:44
Avatar de drac94  
Fecha de Ingreso: mayo-2008
Ubicación: México
Mensajes: 383
Antigüedad: 16 años
Puntos: 5
Respuesta: ayudita con error en programa java

mmm, claro que es lo que dice venkman, por que no tratas de sacarlo y compilarlo para que veas que va muy bien, y otra cosa, si no vas a aceptar las sugerencias que te vamos a dar entonces para que gastar tu tiempo preguntandonos
  #6 (permalink)  
Antiguo 21/04/2009, 21:56
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

ya saque el try (todo el bloque de try) que corresponde a teclado.close() y me sigue dando el mismo error.
  #7 (permalink)  
Antiguo 21/04/2009, 21:58
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

ahmm no seas tan agresivo dra94 que ahí estoy haciendo lo ke me estan diciendo.....
  #8 (permalink)  
Antiguo 22/04/2009, 01:44
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayudita con error en programa java

El problema (quito el código que no es relevante para la explicación):

Código java:
Ver original
  1. public class TecladoA {
  2.     public static void main(String[] args){  /* INICIO BLOQUE FUNCION MAIN */
  3.         // ...
  4.         try{ /* INICIO BLOQUE TRY 1 */
  5.             Connection conexion = DriverManager.getConnection("jdbc:odbc:curso1","jd bc","jdbc");
  6.             // ...
  7.             InputStreamReader entrada = new InputStreamReader(System.in);
  8.             BufferedReader teclado = new BufferedReader(entrada);
  9.             // ...
  10.         }catch(IOException e){
  11.             System.out.println(e.getMessage());
  12.         } /* FIN BLOQUE TRY 1 */
  13.  
  14.         try{ /* INICIO BLOQUE TRY 2 */
  15.             teclado.close();
  16.             entrada.close();
  17.         }catch(IOException e){
  18.             System.out.println(e.getMessage());
  19.         } /* FIN BLOQUE TRY 2 */
  20.         try{ /* INICIO BLOQUE TRY 3 */
  21.             conexion.close();
  22.         }catch(SQLException e){
  23.             System.out.println(e.getMessage());
  24.         } /* FIN BLOQUE TRY 3 */
  25.     } /* FIN BLOQUE FUNCION MAIN */
  26. }

Lo que ocurre: Las variables conexion, entrada y teclado, las estás declarando dentro del "bloque try 1" y por tanto sólo existen dentro de ese bloque. Así que cuando se acabe el "bloque try 1" esas variables ya no existirán. Cuando luego las intentes utilizar en los otros bloques, el compilador te dará error.


La solución:

Código java:
Ver original
  1. public class TecladoA {
  2.     public static void main(String[] args){  /* INICIO BLOQUE FUNCION MAIN */
  3.         // ...
  4.         Connection conexion;
  5.         InputStreamReader entrada;
  6.         BufferedReader teclado;
  7.         try{ /* INICIO BLOQUE TRY 1 */
  8.             conexion = DriverManager.getConnection("jdbc:odbc:curso1","jd bc","jdbc");
  9.             // ...
  10.             entrada = new InputStreamReader(System.in);
  11.             teclado = new BufferedReader(entrada);
  12.             // ...
  13.         }catch(IOException e){
  14.             System.out.println(e.getMessage());
  15.         } /* FIN BLOQUE TRY 1 */
  16.  
  17.         try{ /* INICIO BLOQUE TRY 2 */
  18.             teclado.close();
  19.             entrada.close();
  20.         }catch(IOException e){
  21.             System.out.println(e.getMessage());
  22.         } /* FIN BLOQUE TRY 2 */
  23.         try{ /* INICIO BLOQUE TRY 3 */
  24.             conexion.close();
  25.         }catch(SQLException e){
  26.             System.out.println(e.getMessage());
  27.         } /* FIN BLOQUE TRY 3 */
  28.     } /* FIN BLOQUE FUNCION MAIN */
  29. }

Ahora las 3 variables están declaradas dentro del "bloque de la función main" de modo que existen en todo el "bloque funcion main".


Eso sí, te seguirá dando problemas porque no estás manejando bien las excepciones. ¿Qué ocurre si falla el getConnection? Salta la primera excepción, no haces nada con ella. Intentas seguir. Haces teclado.close() y saltará un NullPointerException porque teclado es null y como no capturas la NPE entonces saltará y terminará el programa.
  #9 (permalink)  
Antiguo 22/04/2009, 23:06
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

hola venkman:
resulta que compila el programa perfecto pero no ejecuta ya que digito numeros de matriculas y no me modifica la base de datos.Entre otras cosas voy a abrir la base de datos y no se deja abrir en acces,dice que graba en tu maquina el archivo y luego abrelo,resulta que lo grabo en mis documentos ,en escritorio y nada que abre;y luego saca ese mensaje.
Tengo otro programa .java que al ejecutarlo me deja ver los registros pero al ejecutarlo solo
me aparece los registros que estan creados en la tabla de access desde un principio mas no los que entre por el programa tecladoA.java.
AYUDAME PORFA
GRACIAS
(este es el programa final):
import java.io.*;
import java.sql.*;
import java.net.*;

public class TecladoA {
public static void main(String[] args){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e){
System.out.println(e.getMessage());
}
BufferedReader teclado;
teclado = new BufferedReader(new InputStreamReader(System.in));

String Matricula="";
try{
Connection conexion= DriverManager.getConnection("jdbc:odbc:curso1","jd bc","jdbc");
Statement estatuto = conexion.createStatement();

System.out.println("Teclea Matricula:");
System.out.println("Teclea q y <enter> para terminar");

conexion.close();

}catch(SQLException e){
System.out.println(e.getMessage());
}
try{
while(Matricula.compareTo("q")!=0){
Matricula = teclado.readLine();
System.out.println(">> "+Matricula);
}
}catch(IOException e){
System.out.println(e.getMessage());
}

try{
teclado.close();


}catch(IOException e){
System.out.println(e.getMessage());
}

}
}
  #10 (permalink)  
Antiguo 23/04/2009, 02:05
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayudita con error en programa java

No te modifica la base de datos porque no has hecho nada para modificar la base de datos.

Lo único que haces en ese código es abrir la conexión y luego volver a cerrarla. PEro en ningún sitio intentas escribir nada en la base de datos.

No se trata de ningún error. Simplemente no lo has hecho.
  #11 (permalink)  
Antiguo 23/04/2009, 13:23
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

haber venkman:
cuando yo ejecuto la aplicacion me pide cuantos numeros de matricula yo quiera introducir
pero al momento de ver la base de datos no hay nada.
que instruccion le hace falta para hacerlo?
  #12 (permalink)  
Antiguo 23/04/2009, 13:25
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

haber venkman:
cuando yo ejecuto la aplicacion me pide cuantos numeros de matricula yo quiera introducir
pero al momento de ver la base de datos no hay nada.
que instruccion le hace falta para hacerlo?
recuerda que los datos se deben entrar por teclado.
  #13 (permalink)  
Antiguo 23/04/2009, 13:47
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayudita con error en programa java

A ver, diegofernando:

¿Ese código lo has hecho tú? Porque lo que te estoy diciendo es que en ningún sitio de ese código hace nada para escribir en la base de datos. Sí, te pide los números de matrícula, pero en la base de datos no escribe nada porque esa parte no la has hecho.
  #14 (permalink)  
Antiguo 29/04/2009, 12:05
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

vnekman precisamente eso es lo que persigo enterarme de las instrucciones
para poder actualizar la base de datos,simplemente no se como hacerlo.
yo hice el programa por la si alguna duda.
  #15 (permalink)  
Antiguo 29/04/2009, 12:18
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayudita con error en programa java

Tu problema entonces es que no preguntas bien, diegofernando. Tal como hiciste la pregunta lo que se entendía era que tu programa tenía algún error y por eso no escribía en la base de datos.

Tu pregunta en realidad es "¿Cómo hago para escribir en una base de datos?", porque no es que haya ningún error, sino que no lo has hecho.

Lo que necesitas es un tutorial: http://www.programacion.com/java/tutorial/jdbc/
  #16 (permalink)  
Antiguo 29/04/2009, 15:46
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

ahmm ok voy a mirar el link.
  #17 (permalink)  
Antiguo 29/04/2009, 21:53
Avatar de diegofernando  
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: ayudita con error en programa java

Hola venkman:

estuve mirando y estudiando el link que me enviaste pero este trata realcionado
con web,y lo ke kiero es aplicacion ,sin embargo estuve llevando unas instrucciones en el ejemplo que hablan y no me compila.
QUE PUEDO HACER O SI ME DIERAS OTRO LINK pero que trate aplicaciones no web.
si tu sabes las instrucciones de insercion,eliminacion y modificacion de registros en java para acces quedaria agradecido,
  #18 (permalink)  
Antiguo 30/04/2009, 01:06
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayudita con error en programa java

No trata sobre aplicaciones web, ni sobre aplicaciones no web. Trata directamente sobre acceso a base de datos con JDBC.

Ese tutorial es bastante bueno y está traducido directamente del tutorial de Sun. Si realmente quieres aprender algo, estúdiatelo en serio. Yo no te voy a dar "las instrucciones" porque no es una receta de "pones estas dos líneas y mágicamente todo funciona". No te voy a dar todo masticado.

Si lo que quieres es eso, puedes buscar en algún buscador porque tutoriales hay cientos y miles.
  #19 (permalink)  
Antiguo 30/04/2009, 01:08
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayudita con error en programa java

--repetición--

Última edición por venkman; 30/04/2009 a las 07:23
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 07:57.