Java swing将数据从mysql数据库检索到textfield

Java swing将数据从mysql数据库检索到textfield,java,mysql,swing,Java,Mysql,Swing,我在mysql表中有一列有100条记录,我想每隔3秒显示textfield内表中的值,显示0-99之间的记录。这是我的代码: Connection conn = null; Statement st = null; ResultSet rs = null; String dbUrl = "jdbc:mysql://localhost:3306/jointdb"; String dbUsr = "root"; String dbPass = "a12345"

我在mysql表中有一列有100条记录,我想每隔3秒显示textfield内表中的值,显示0-99之间的记录。这是我的代码:

Connection conn = null;
    Statement st = null;
    ResultSet rs = null;
    String dbUrl = "jdbc:mysql://localhost:3306/jointdb";
    String dbUsr = "root";
    String dbPass = "a12345";
    try{
    String sql= "select expert1 from eridb";
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection (dbUrl,dbUsr,dbPass);
    st = conn.createStatement();
    rs = st.executeQuery(sql);
   // textField1.setText("enter text here");
    while(rs.next()){
        //Get values
        String value = rs.getString("expert1");
        textField1.setText(value);        
    }

}catch(Exception e){
    e.printStackTrace();
}finally{
    try {
        rs.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    try {
        st.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    try {
        conn.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}
现在,我想从索引0-99记录每隔3秒显示一次记录的值

注意:数据每隔3秒进入数据库
谢谢

使用Thread.sleep

while(rs.next()){
    String value = rs.getString("expert1");
    textField1.setText(value);        
    try {
          Thread.sleep(3000);
    } catch(Exception e) {}
}
可用于并行处理

请阅读并确认

然后使用javax.swing.Timer从数据库中重新读取数据,并按照需要的方式设置JTextField上的内容

Timer timer = new Timer(3000, new ActionListener() {

    @Override
     public void actionPerformed(ActionEvent e) {
         .... // retrieve data and prepare the textField content
         textField.setContent(...);
     }          
});

timer.start();

或者使用timertask获取您的requirement@Prabha你能帮我编辑我的代码吗?如果你使用的是Java 7或更新版本,你可能希望使用try with resources编写此代码,这将大大简化你的异常处理代码。据我所知,一旦组件可见,它应该只通过事件线程进行操作,不是吗?所以,textfield.setTextvalue;需要为事件线程安排时间。了解我在回答中提到的线程以单独启动进程。之后它就不会挂了,这是错误的。Thread.sleep3000会阻止UI。将Thread.sleep3000放入单独的线程仍然存在事件线程上未更新textField的问题。此外,建议的解决方案使ResultSet保持长时间打开,并且在从ResultSet读取最后一个值后,JTextField的刷新不会继续。