2012-03-03 71 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");