2010-11-08 3 views
1

Dans mon tableau, j'ai pris la capacité dans ce formulaire. `capacité DECL (3,0) UNSIGNEDrequête dans Sql avec JDBC

Est-il correct? Je ne suis pas sûr si la méthode ci-dessus est correcte pour le faire de cette façon? si je dois le faire avec PreparedStatement, comment cela fonctionnerait-il?

Répondre

0

Tout d'abord, votre requête SQL est incorrecte.

SELECT max(f.capacity)-COALESCE(SUM(r.num_seats),0) AS seats_avail 
    FROM flights f, 
     reservations r 
    WHERE f.flight_no="CSC585" 
    AND r.flight_no=f.flight_no 
    AND r.departure_date="2010-05-31"; 

Code Java ressemble

String sql = " SELECT max(f.capacity)-COALESCE(SUM(r.num_seats),0) AS seats_avail 
     FROM flights f, 
      reservations r 
     WHERE f.flight_no=? 
     AND r.flight_no=f.flight_no 
     AND r.departure_date=?"; 

final PreparedStatement stmt = connectionHolder.prepareStatement(sql); 

stmt.setString(1, "CSC585"); 
stmt.setString(2, "2010-05-31"); 

ResulSet rs = stmt.executeQuery(); 

while (rs.next()) { 
    String seats = rs.getString("seats_avail"); 
    System.out.println(seats); 
} 
+0

merci .... dois-je utiliser « finale » mot-clé ici ?? il est inutile? Et Dans la requête, r.flight_no = csc585 donné ... donc je peux utiliser stmt.setString (3, "csc585") pour cela ?? –

+0

Vous n'avez pas besoin d'utiliser "final" si vous le souhaitez. Et vous pouvez utiliser stmt.setString (3, "csc585") si vous le souhaitez. –

+0

stmt.setString (1, "CSC585"); - Pouvez-vous nous dire pourquoi nous utilisons 1 ici et 2 dans l'autre? que représente-t-il? SI nous utilisons? Dans notre question, comment cela prendrait-il la condition requise? –