У меня есть приложение GUI с JDBC. Один поток предназначен для качания gui.Java-поток для JDBC
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
public void run()
{
try {
runApp();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
После запуска программы отображаются мои данные из базы данных в JTable.
public List<Category> getCategory() throws SQLException
{
List<Category> cat = new ArrayList<Category>();
Connection conn = Database.getInstance().getConnection();
System.out.println(conn);
String sql = "select id, name from kategorie";
Statement selectStatement = conn.createStatement();
ResultSet results = selectStatement.executeQuery(sql);
while(results.next())
{
int id = results.getInt("id");
String name = results.getString("name");
Category category = new Category(id, name);
cat.add(category);
}
results.close();
selectStatement.close();
return cat;
}
Интересно, как добавить новый поток, чтобы все операции с базой данных выполнялись в отдельном потоке, а не в этом потоке.
ЮПП, посмотрите на [SwingWorker] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html). Я мог бы найти пример тоже для вашего удобства. Хотя мне нужно немного для этого :-) –
Вот ссылка [https://www.dropbox.com/s/r9cct4kxns0rr6i/database.zip), хотя я использую 'Derby' в качестве базы данных, которая приходит по умолчанию с установкой Java. Надеюсь, ты знаешь, как это сделать, иначе дай мне знать. Вам просто нужно запустить его, как: 'java -classpath.;% JAVA_HOME% \ db \ lib \ derby.jar example.JARCreationExample.java'. Надеюсь, вы тоже установили переменную 'JAVA_HOME' в вашей системе :-) –
[Этот учебник] (http://albertattard.blogspot.com/2008/09/practical-example-of-swing-worker.html) является хорошо. –