Ver Mensaje Individual
  #7 (permalink)  
Antiguo 05/04/2006, 05:20
OrionKing
 
Fecha de Ingreso: agosto-2005
Mensajes: 142
Antigüedad: 19 años, 6 meses
Puntos: 0
Muchas gracias a todos por la ayuda , me parece que ya lo he conseguido, he realizado el siguiente código en java

He creado las funciones de insercion en la BBDD, cada vez que alguien inserta en la BBDD pasa por llamar a esa clase. La clase inserta en la base de datos y retorna el último id sertado, como vereis tambies se inserta el ultimo id en un campo de la tabla... la herramienta de trabajo funciona asi...

Una cosilla, ¿se pueden ralizar de forma eficiente los bloqueos de esa manera?
Al principio y en el finally

Por cierto los bloqueos tipo write bloquena solo escrituras o tambien lecturas?

Muchas gracias, ir aprendiendo cosillas en este foro es lo único bueno del día.

Hasta prontro.

Espero que el codigo en java en caso de que sea correcto le sirva de ayuda a alguien... es la fiesta de los try..

Código PHP:
  
        
try{
            Class.
forName("com.mysql.jdbc.Driver");
            
conn DriverManager.getConnection(urluserpass);
            
conn.setAutoCommit(false);
            
            try{
                
                
PreparedStatement pstm conn.prepareStatement(Sentencia);
                if (
prepare!=null){
                    for(
int pre=1;pre<prepare.length;pre++){
                        
pstm.setString(preprepare[pre]);
                    }
                }
                
pstm.execute();
                
conn.commit();
                
pstm.close();

               
// if(!incremento.equals("none")){
                    
PreparedStatement SlastID conn.prepareStatement("SELECT LAST_INSERT_ID() AS LASTID");
                    
ResultSet lastID SlastID.executeQuery();
                    
conn.commit();
                    while (
lastID.next()){
                        
questionID lastID.getLong("LASTID");
                    }
                     if(!
incremento.equals("none")){
                    
Updat="UPDATE "+tabla+" set "+incremento+" =_idregistro where _idregistro="questionID+" and "+incremento+" = 0";
                    
PreparedStatement Upd conn.prepareStatement(Updat);
                    
resUpdateUpd.executeUpdate();
                    
conn.commit();
                    
                    
//SlastID.close();
                    //lastID.close();
                    
Upd.close();
                }
               
//pstm.close();
                
                    
SlastID.close();
                    
lastID.close();
                    
conn.close();
                
                
                
            }catch (
SQLException ex) {
                
conn.rollback();
                
System.out.println("ERROR en consulta SQL.");
                
System.out.println("SQLException: " ex.getMessage());
                
System.out.println("SQLState: " ex.getSQLState());
                
System.out.println("VendorError: " ex.getErrorCode());
                
            }
finally{
                try{
                    
conn.setAutoCommit(true);
                    
// conn.close();
                
} catch (SQLException y) {  System.out.println("ERROR en consulta SQL.");
                
System.out.println("SQLException: " y.getMessage());
                
System.out.println("SQLState: " y.getSQLState());
                
System.out.println("VendorError: " y.getErrorCode());
                }
            }  
//finally
        
} catch(SQLException u){
            
System.out.println("ERROR en consulta conexxion.");
            
System.out.println("SQLException: " u.getMessage());
            
System.out.println("SQLState: " u.getSQLState());
            
System.out.println("VendorError: " u.getErrorCode());
            
        }catch (
ClassNotFoundException e){
            
//Mostra errors de creació del driver
            
System.out.println("No s'ha pogut conectar amb el servidor! :(");
            
        }
        return 
questionID