2016-11-13 51 views
0

因此,我试图打印出我的程序中处理某些严重程度的医疗条件(高,中,低)的所有医院,这些医疗条件是从我的程序的另一部分传递。尝试检索多重JDBC结果

最初,它会找到正确的严重性级别,因此它会检查数据库中的另一个表以查找医院并打印它们。然而,它只打印了其中一张(其中有两张是严格测试的),但不是另一张。

任何帮助将不胜感激,我觉得我的循环是错误的。

感谢。

// 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

不要叫'results.first()'前'while'环

相反,你可以按如下方式使用它。我认为你正在跳过第一个记录。另外,您的查询看起来很容易被注入。考虑使用准备好的声明。考虑使用试用资源。 – bradimus

+0

谢谢。有人已经提出了修正意见,但是当我试图将其标记为正确时,它已被删除。 –

回答

0

由于您正在使用results.next()两次,所以缺少一条记录。

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);