java数据库连接检索

java数据库连接检索,java,swing,jdbc,Java,Swing,Jdbc,我使用下面的代码在swing表单中显示数据库中的记录。但是,当我单击按钮时,它只显示数据库的第一条记录(数据库中的表有5条记录) 是吗 试一试 这将帮助您遍历结果集。if(rs.first()) 这会检查您是否在结果集中的第一条记录上。好吧,您确实是这样编写代码的。这里引用了结果集#first(): 将光标移动到此ResultSet对象中的第一行 如果光标位于有效行上,则返回:truefalse 你看,它所做的就是把光标移到第一行。没别的了 基本上,您需要在while循环中将其替换为。然后,只要

我使用下面的代码在swing表单中显示数据库中的记录。但是,当我单击按钮时,它只显示数据库的第一条记录(数据库中的表有5条记录)

是吗

试一试

这将帮助您遍历结果集。

if(rs.first())


这会检查您是否在结果集中的第一条记录上。好吧,您确实是这样编写代码的。这里引用了
结果集#first()

将光标移动到此ResultSet对象中的第一行

如果光标位于有效行上,则返回:
true
<如果结果集中没有行,则代码>false

你看,它所做的就是把光标移到第一行。没别的了

基本上,您需要在
while
循环中将其替换为。然后,只要有一行,它就会遍历所有行

while (rs.next()) {
    // ...
}
但还有一个问题。如果您只做了更改,那么代码将只显示最后一行的数据,因为您每次都在重复使用相同的文本组件。您希望在UI的新字段中分别显示每一行。我不做Swing,所以我无法给出一个详细的答案,但我至少知道你会用它

另见:

也就是说,代码中还有其他问题

  • 每次调用
    Class#forName()
    都是不必要的。在应用程序启动期间只需一次就足够了
  • 不在
    最后
    块中的
    结果集
    语句
    连接
    上调用
    close()
    ,将导致资源泄漏。如果您继续长期运行此功能,数据库迟早会耗尽连接,您的应用程序将无法再连接它并中断。相应地修复它
  • 仅仅打印
    ex
    并不能提供有价值的信息。它将只打印异常类型和消息,这在调试期间没有多大帮助。您希望改为执行
    例如printStackTrace()

  • 可以将JDBC ResultSet对象视为指向正在执行的查询的结果行开始之前的位置。 第一个rs.next()指向返回的第一行。对rs.next()的后续调用将其在结果行中向前移动。 因此,要显示所有结果,请使用该概念

    while(rs.next()){
      //use rs to get the details of the current row.
    }
    

    如果下一行存在,rs.next()将返回true。

    no,则它仅显示在表的最后一条记录中。以前它只显示第一条记录您正在一次又一次地更新同一字段。。。因此,它只显示最后一个值。可能您需要根据需要显示文本字段数组。您可以在while循环中动态创建textfields,或者将结果值存储在数组中,并将其传递给swing客户机,在那里您有一个文本字段数组
    while (rs.next())
    
    while (rs.next()) {
        // ...
    }
    
    while(rs.next()){
      //use rs to get the details of the current row.
    }