2012-03-03 73 views
0

嗨,在下面的代码中,它只打印表中的第一个id和第一个名字。如何让它打印出查询中的所有结果,而不仅仅是第一个结果?感谢Java数据库MySQL

Statement stat = conn.createStatement(); 

stat.execute("CREATE TABLE Test (Id VARCHAR(20), Name VARCHAR(20))"); 
stat.execute("INSERT INTO Test VALUES ('1AA', 'John')"); 
stat.execute("INSERT INTO Test VALUES ('2AA', 'George')"); 
stat.execute("INSERT INTO Test VALUES ('3AA', 'Richard')"); 


ResultSet result = stat.executeQuery("SELECT * FROM Test"); 
result.next(); 
System.out.println(result.getString("Name")); 
System.out.println(result.getString("Id")); 
stat.execute("DROP TABLE Test"); 

回答

6

使用while循环遍历所有的结果:

... 
ResultSet result = stat.executeQuery("SELECT * FROM Test"); 
while(result.next()) { 
    System.out.println(result.getString("Name")); 
    System.out.println(result.getString("Id")); 
} 
stat.execute("DROP TABLE Test"); 
2

ResultSet是一个迭代器,即如果有更多的数据存在于next方法提供的指示。

例如:

while(result.next()) { 
System.out.println(result.getString("Name")); 
} 
1

您需要通过结果来迭代。您可以使用while循环

while(result.next()) 
{ 
     System.out.println(result.getString("Name")); 
     System.out.println(result.getString("Id")); 
} 
1

您可以通过ResultSet迭代打印所有从查询结果如下图所示:

stat.execute("CREATE TABLE Test (Id VARCHAR(20), Name VARCHAR(20))"); 
    stat.execute("INSERT INTO Test VALUES ('1AA', 'John')"); 
    stat.execute("INSERT INTO Test VALUES ('2AA', 'George')"); 
    stat.execute("INSERT INTO Test VALUES ('3AA', 'Richard')"); 


    ResultSet result = stat.executeQuery("SELECT * FROM Test"); 

    while(result.next()) { 
     System.out.println(result.getString("Name")+"\t"+result.getString("Id")); 
     //OR 
     //System.out.println(result.getString(1)+"\t"+result.getString(2)); 
    } 

    stat.execute("DROP TABLE Test");