Java 我需要帮助从数据库中获取数据

Java 我需要帮助从数据库中获取数据,java,iteration,resultset,Java,Iteration,Resultset,这是我的桌子 FirstName----LastName----City--------State Ram----------Padhan------Houston-----TX Ram----------Padhan------Washingtom--MI Ram----------Padhan------Alok--------BG Keiry--------Lading------Azan--------BL Keiry--------Lading------Aror------

这是我的桌子

FirstName----LastName----City--------State 
Ram----------Padhan------Houston-----TX 
Ram----------Padhan------Washingtom--MI 
Ram----------Padhan------Alok--------BG 
Keiry--------Lading------Azan--------BL 
Keiry--------Lading------Aror--------BS
如何获取数据,以便输出:

FirstName: Ram--LastName: Padhan 
City: Houston--State:TX 
City:Washington--State:MI 
City:Alok--State:BG
FirstName: Keiry--LastName: Lading 
City: Azan--State:BL 
City:Aror--State:BS
除了按每行获取值外:

FirstName: Ram--LastName: Padhan 
City: Houston--State:TX 
FirstName: Ram--LastName: Padhan 
City:Washington--State:MI
这就是我所做的。我得到的输出只是第一行firstname和lastname,而对于state和city列,我得到的值一直到最后一行

public class Practise 
{ 
    public static void main(String[] args) 
    { 
        Connection conn = null; 
        Statement stmt = null; 

        try { 
             Class.forName("com.mysql.jdbc.Driver") ; 
             String url = "jdbc:mysql://localhost:3306/table_name"; 

             conn = DriverManager.getConnection(url,"root","root" ); 

             stmt = (Statement) conn.createStatement(); 

             String sql = "SELECT First_Name ,Last_Name ,City_Name , State_Name, FROM table_name"; 

             ResultSet rs = stmt.executeQuery(sql); 

             while(rs.next())
             {
                String first = rs.getString("First_Name"); 
                String last = rs.getString("Last_Name"); 
                System.out.print("First: " + first); 
                System.out.println("Last: " + last);

                do 
                { 
                    String city = rs.getString("City_Name"); 
                    String state = rs.getString("State_Name"); 
                    System.out.println("City: " + city);
                    System.out.println("State: " + state); 
                    System.out.println(); 
                } while(rs.next());
             }
             rs.close(); 
        }
        catch(SQLException se)
        { 
             se.printStackTrace(); 
        }
        catch(Exception e)
        { 
             e.printStackTrace();
        }
        finally { 
             try { 
                if (stmt != null) 
                    conn.close(); 
             }
             catch(SQLException se)
             { } 
             try {
                 if (conn != null) 
                     conn.close(); 
             }
             catch(SQLException se)
             { 
                 se.printStackTrace(); 
             } 
        } 
    } 
}

您有一个
while
循环嵌套在另一个
while
循环中

将其更改为:

while(rs.next())

{ 
String first = rs.getString("First_Name"); 

String last = rs.getString("Last_Name"); 

System.out.print("First: " + first); 

System.out.println("Last: " + last);
String city = rs.getString("City_Name"); 

String state = rs.getString("State_Name"); 

System.out.println("City: " + city);

 System.out.println("State: " + state); 

System.out.println(); 
}
编辑我最初误解了你的问题。这是伪代码,因为我没有尝试过,但您需要使用
组\u CONCAT


考虑使用两个表。一个用于个人,另一个用于城市/州。首先选择人员,然后在迭代时,使用键查找城市/州。

请格式化代码,因为代码无法读取。事实上,把你的整个问题格式化。我认为你误解了这个问题。请参阅“如何获取数据,使我的输出成为问题中的”“后的输出。@Dukeling哦,你说得对……令人惊讶的是,格式有多么大的不同……去掉第二个循环将获得每行的值。我不能使用两个表。这是我工作的一部分。我必须使用单个表获取数据。
Person previousPerson = null;
Person nextPerson = null;
while(rs.next()) {
    nextPerson = new Person(rs.getString("First_Name"), rs.getString("Last_Name")); 
    if( ! nextPerson.equals(previousPerson)) {
        previousPerson = nextPerson;
        System.out.println(previousPerson); 
    }
    City city = new City(rs.getString("City_Name"), rs.getString("State_Name")); 
    System.out.println(city);
}
Person previousPerson = null;
Person nextPerson = null;
while(rs.next()) {
    nextPerson = new Person(rs.getString("First_Name"), rs.getString("Last_Name")); 
    if( ! nextPerson.equals(previousPerson)) {
        previousPerson = nextPerson;
        System.out.println(previousPerson); 
    }
    City city = new City(rs.getString("City_Name"), rs.getString("State_Name")); 
    System.out.println(city);
}