Java swing将数据从mysql数据库检索到textfield
我在mysql表中有一列有100条记录,我想每隔3秒显示textfield内表中的值,显示0-99之间的记录。这是我的代码: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"
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的刷新不会继续。