Hej folkens
Håber der er nogen derude, der vil være lidt behjælpelig - for jeg er mildest talt faret vild i tankerne
Overordnet drejer det sig om Java JDBC og en Oracle database. SQL'en virker (testet direkte på serveren).
Baggrund - Det jeg ønsker at gøre er følgende:
Låse en tabel, undersøge tabellen for specifikt indhold (om det findes - er undladt i kode-eksemplet her) - alt efter om der findes noget (hvis nej), så indsæt en ny række i tabellen. Det burde være lige til højre benet - men...
Mit problem er, at jeg IKKE kan gennemføre den executeUpdate, der hører til insert-sql'en (altså pstmt.executeUpdate - skifter jeg denne linie ud med en select sql OG executeQuery så vil den sagtens dette, men altså ikke executeUpdate?! Har en fornemmelse af, det er JDBC? - den sidste linie der bliver skrevet ud på skærmen er (sop) pstmt prepare) - applikationen (java) står bare og hænger - til jeg går ind og brutalt stopper den manuelt - ingen fejlbeskeder eller noget. Mærkeligt. Og der er en meget lille chance for, at det er andre brugere på databasen, der låser - der er kun 5 brugere og de andre har ikke den kode, jeg har med lock i (jeg er den eneste der koder).]Her er en simplificeret test-udgave af det jeg ønsker - og den giver samme "fejl"/problem som beskrevet
(se *** i koden for hvor den kommer til):
public static void main(String[] args) {
boolean stop=false;
// Lås booking tabellen mens betingelser undersøges
String lockSql = "Lock table booking in exclusive mode nowait";
PreparedStatement lockStmt = DBConn.prepare(lockSql,false); //slå autocommit fra
try{
lockStmt.executeUpdate(); // Lås booking tabellen (låses op af commit eller rollback)
System.out.println("lock");
}
catch(Exception e){
System.out.println("Fejl i BookingMapper opdaterBooking Lock");
System.out.println(lockSql);
System.out.println(e.getMessage());
DBConn.rollback();
stop=true;
System.out.println("rollback lock");
}
finally {
DBConn.cleanUp(lockStmt);
System.out.println("cleanup lock");
}
if (! stop){
// Insert booking
String sql = "insert into booking values (null,1,1,1,1,1,null,'07-06-04')";
PreparedStatement pstmt = DBConn.prepare(sql,false); //slå autocommit fra
System.out.println("pstmt prepare");
// *** nedenstående execute udføres ikke (den "hænger")
try{
pstmt.executeUpdate();
System.out.println("executeUpdate");
}
catch(Exception e){
System.out.println(e.getMessage());
DBConn.rollback();
}
DBConn.commit();
System.out.println("commit");
}
}
}
Indlæg senest redigeret d. 04.06.2007 17:17 af Bruger #11920