1

如何使用 JAVA 获取 Mysql DB 中的所有数据

我有这个代码,但他只得到第一行

if (connection != null) {
System.out.println("You made it, take control your database now!");
        Statement st = connection.createStatement();
        String sql = ("SELECT * FROM nc;");
        ResultSet rs = st.executeQuery(sql);

        if(rs.next()) {
        int id = rs.getInt("id");
        String str1 = rs.getString("Name");
        String str2 = rs.getString("City");
System.out.format("%s, %s, %s\n", id, str1, str2);                 

我进入屏幕:id 0,名字 Nizar,City Casablanca

那么我如何获取我数据库中的所有行,谢谢

4

4 回答 4

2

如果使用 if 块将只执行一次。如果使用 while 块将执行直到条件为 false

使用while而不是if

while(rs.next()) {
        int id = rs.getInt("id");
        String str1 = rs.getString("Name");
        String str2 = rs.getString("City");
System.out.format("%s, %s, %s\n", id, str1, str2);  
}


rs.next()  

完成所有记录后将返回 false

于 2013-06-05T08:16:22.403 回答
0

你想改变你 if (rs.next()) {while(rs.next()) {

您只是按原样迭代一行,它将遍历所有行。

作为最佳实践,不要让 while(...) 循环的内容太花哨。您希望在迭代时最小化每行处理,因此连接不会保持打开太久。许多人只是将行读入列表,或将它们打印出来(就像你正在做的那样)。

于 2013-06-05T08:19:38.180 回答
0

改变你ifwhile...

while(rs.next()) {
    int id = rs.getInt("id");
    String str1 = rs.getString("Name");
    String str2 = rs.getString("City");
    System.out.format("%s, %s, %s\n", id, str1, str2);      
}
于 2013-06-05T08:16:40.323 回答
0

替换if(rs.next())while(rs.next())

if(rs.next())意思是“如果我们有一个结果,移动到它并执行以下操作”

while(rs.next())意思是“当我们仍然有结果时,转到下一个并执行以下操作”。

于 2013-06-05T08:17:35.977 回答