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(url, user, pass);
conn.setAutoCommit(false);
try{
PreparedStatement pstm = conn.prepareStatement(Sentencia);
if (prepare!=null){
for(int pre=1;pre<prepare.length;pre++){
pstm.setString(pre, prepare[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);
resUpdate= Upd.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;