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

Seguramente es una tonteria, pero para mi...

Estas en el tema de Seguramente es una tonteria, pero para mi... en el foro de Java en Foros del Web. Wenas a todos!! Tengo un problema para insertar un simple integer en una base de datos!! Tengo un identificador, que es un integer inicializado a ...
  #1 (permalink)  
Antiguo 11/08/2006, 02:39
 
Fecha de Ingreso: julio-2006
Mensajes: 34
Antigüedad: 17 años, 9 meses
Puntos: 0
Seguramente es una tonteria, pero para mi...

Wenas a todos!!

Tengo un problema para insertar un simple integer en una base de datos!! Tengo un identificador, que es un integer inicializado a 1 y lo q quiero es cogerlo y meterlo en mi tabla, en el campo Identificador, y luego incrementarlo. Pero no consigo meterlo!! En la tabla de mi base de datos, el campo Identificador es la clave primaria y esta como integer!

Código PHP:
inserta "INSERT INTO visitadentro (Identificador, Fecha, NombreEmpresa,Visitado, Motivo) " +
                               
"VALUES(xxxxx, NOW(), '"+nombre+"','"+visitado+"','"+motivo+"')"
donde estan las xxxxx es lo q me peta!! El nombre, visitado y motivo lo pillo desde un formulario!
  #2 (permalink)  
Antiguo 11/08/2006, 03:03
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
La variable identificador de tu base de datos no será autoincrementable, no? si es así, no le pases ningún valor ni la pongas en el insert.

Sino, comprueba que esté bien su definicion (que no sea char en realidad o cosas de esas)

  #3 (permalink)  
Antiguo 11/08/2006, 03:10
 
Fecha de Ingreso: julio-2006
Mensajes: 34
Antigüedad: 17 años, 9 meses
Puntos: 0
No es autoincremento. Lo tengo como integer!
  #4 (permalink)  
Antiguo 11/08/2006, 03:23
 
Fecha de Ingreso: julio-2006
Mensajes: 60
Antigüedad: 17 años, 9 meses
Puntos: 0
¿Qué error te da exactamente? Captura la excepción y haz un printStackTrace (creo que se escribía así) y el error con su traza quedará registrado en los logs.
  #5 (permalink)  
Antiguo 11/08/2006, 04:17
 
Fecha de Ingreso: julio-2006
Mensajes: 34
Antigüedad: 17 años, 9 meses
Puntos: 0
Lo de introducir esta solucionado, pero ahora tengo el problema serio...
Quiero recuperar de mi base de datos el mayor identificador:

Código PHP:
ResultSet identifica sentencia2.executeQuery("select max(Identificador) from visitadento") ;} 
Lo q tengo me peta de por todo.... Seguramente estoy poniengo alguna bestialidad... Lo unico q quiero es q me recupere el mayor identificador de mi base de datos para poder sumarle 1 y seguir metiendo en la base de datos!!!
  #6 (permalink)  
Antiguo 11/08/2006, 04:38
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
Tranquilidad! que lo solucionamos

pon más codigo, con eso no me aclaro :( Que es sentencia2? lo estas reutilizando? igual tienes problemas con las conexiones.

Luego también, te aconsejo que al max() le pongas un as mejor SELECT MAX(Identificador) AS CANTIDAD FROM...; y lo coges con un getInt("CANTIDAD").

También ten en cuenta que has puesto en el from visitadento, no visitadentro, no sé si estará bien escrito.

  #7 (permalink)  
Antiguo 11/08/2006, 04:56
 
Fecha de Ingreso: julio-2006
Mensajes: 34
Antigüedad: 17 años, 9 meses
Puntos: 0
Esto es lo q tengo por ahora, pero me sigue fallando
Código PHP:
            public void insertar(int filas)throws SQLExceptionException {

            
filas contfilas();
            
Connection con null;
            
Statement sentencia null;
            
String URL "jdbc:mysql://localhost/visitas";
            
String query ="";
            
PreparedStatement ps null;
            
ResultSet rs null;
            
int resultado;
                try {        
                
//cargamos el Driver
                    
Class.forName("com.mysql.jdbc.Driver");
                
//conectamos con la base de datos 
                    
con DriverManager.getConnection(URL"root""");
                    
filas contfilas();
                    if (
filas ==0) {
                        
identificador1;
                    }
                    else {
query = ("SELECT max(Identificador) AS cantidad FROM visitadentro");
                         
ps = (PreparedStatementcon.prepareStatement(query);
                         
rs ps.executeQuery();
                         
resultado rs.getInt("cantidad");
                         
identificador resultado +1;
                }
                         
                         
                         
                    
inserta "INSERT INTO visitadentro (Identificador, Fecha, NombreEmpresa,Visitado, Motivo) " +
                               
"VALUES("+identificador+", NOW(), '"+nombre+"','"+visitado+"','"+motivo+"')";
                 
//Creamos el ststement
                    
sentencia con.createStatement();
                 
//Ejecutamos la actualizacion de la tabla
                    
sentencia.executeUpdate(inserta);
                    
sentencia.close(); 
Las conexiones funcionan! Todos mis problemas vienen con el campo identificador de la base de datos! Eso es lo q intento solucionar en el if. Miro si es la primera vez q metemos en la base de datos (con el filas ==0), sino, tengo q recuperar el valor del identificador mas alto y sumarle uno para luego cuando me haga el insert, en el identificador, me meta el ultimo mas uno!

Agradezco mucho vuestra ayuda porque me estoy quedando todo loco con esto!! No hay manera!!
  #8 (permalink)  
Antiguo 11/08/2006, 05:26
 
Fecha de Ingreso: noviembre-2005
Mensajes: 97
Antigüedad: 18 años, 5 meses
Puntos: 0
Prueba con esto, te falta el rs.next() para leer los resultados de BD y he quitado algo de código (si no te gusta con que pongas rs.next() en el tuyo también debería ir)

Código PHP:
public void insertar(int filas)throws SQLExceptionException {

            
filas contfilas();
            
Connection con null;
            
Statement sentencia null;
            
String URL "jdbc:mysql://localhost/visitas";
            
String query ="";
            
PreparedStatement ps null;
            
ResultSet rs null;
            
int resultado;
                try {        
                
//cargamos el Driver
                    
Class.forName("com.mysql.jdbc.Driver");
                
//conectamos con la base de datos 
                    
con DriverManager.getConnection(URL"root""");
                    
query "SELECT MAX(Identificador) AS CANTIDAD FROM visitadentro";
                    
ps = (PreparedStatementcon.prepareStatement(query);
                    
rs ps.executeQuery();
                    if (
rs.next()){
                        
identificador = (rs.getInt("CANTIDAD") != null) ? (rs.getInt("CANTIDAD") + 1) : 1;
                    }else{
                        
identificador 1;
                    }
                                              
                    
inserta "INSERT INTO visitadentro (Identificador, Fecha, NombreEmpresa,Visitado, Motivo) " +
                               
"VALUES("+identificador+", NOW(), '"+nombre+"','"+visitado+"','"+motivo+"')";
                 
//Creamos el ststement
                    
sentencia con.createStatement();
                 
//Ejecutamos la actualizacion de la tabla
                    
sentencia.executeUpdate(inserta);
                    
sentencia.close(); 

  #9 (permalink)  
Antiguo 14/08/2006, 01:38
 
Fecha de Ingreso: julio-2006
Mensajes: 34
Antigüedad: 17 años, 9 meses
Puntos: 0
Muchas gracias por tu ayuda RAIKO
Gracias a gente como tú, los novatillos podemos ir aprendiendo poco a poco!!
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 09:09.