2016-11-13 7 views
0

私のプログラムの特定の重症度レベル(高、中、低)を扱う病院のすべてをプリントアウトしようとしています。 。複数のJDBCの結果を取得しようとしています

最初は正しい重大度を見つけますので、データベース内の別のテーブルと照合して病院を見つけて印刷します。しかし、それは病院の1つだけを印刷しています(Imでテストする重大度が高いものは2つありますが、他のものはありません)。

私のループが間違っているような気がします。

ありがとうございました。

// Create selection query, get relevant hospitals 
String select = "SELECT * FROM hospitals WHERE hospitalSeverityHandling = '" + medicalCondition + "'"; 


// Get results hospitals in the database 
ResultSet results = statement.executeQuery(select); 

// When hospitals have been found 

if (results.next()) 
{ 
    results.first(); 

    // Get hospitals with relevant severity 
    //String hospital = results.getString("hospitalName"); 
    //System.out.println(hospital); 

    // Respond to user, get hospital selection 
    // TODO Hospital Selection 
    JOptionPane.showMessageDialog(null, "A list of hospitals have been retrieved for severity level: " + medicalCondition, "Select available hospital", JOptionPane.INFORMATION_MESSAGE); 

    // Loop hospitals 
    while(results.next()) 
    { 
     String hospital = results.getString("hospitalName"); 
     System.out.println(hospital); 
    } 
} 
+0

は 'while'ループの前に')( 'results.firstを呼び出さないでください。私はあなたが最初のレコードをスキップしていると思います。また、あなたのクエリは注入に脆弱に見えます。準備されたステートメントの使用を検討してください。 try-with-resourcesも使用することを検討してください。 – bradimus

+0

ありがとうございます。誰かがすでに修正をコメントしていましたが、正しいとマークしようとすると削除されました。 –

答えて

0

results.next()を2回使用しているため、1レコードが欠落しています。むしろ

、次のようにあなたがそれを使用することができます。

固定
String select = "SELECT * FROM hospitals WHERE  
     hospitalSeverityHandling = '" + medicalCondition + "'"; 

    // Get results hospitals in the database 
    ResultSet results = statement.executeQuery(select); 

    // Loop hospitals 
     while(results.next()) 
     { 
      String hospital = results.getString("hospitalName"); 
      System.out.println(hospital); 
     } 
    } 
0

を:

while(results.next())    
      { 
       // Put into interactive list 
       String hospital = results.getString("hospitalName"); 

       // Loops each hospital via popup, needs to be added to a selection menu 
       JOptionPane.showMessageDialog(null, hospital, "Hospital List", JOptionPane.INFORMATION_MESSAGE); 
関連する問題