SQL データベース内のテーブルをクエリするたびに、100 ミリ秒ごとにループするスレッドをセットアップしようとしています。これが私のpublic static voidメインクラスにあるものです。リスナーの外部で接続を定義し、ループ内でのみクエリを呼び出すにはどうすればよいですか?
// Database credentials
final String url = "jdbc:mysql://192.168.0.0/";
final String db = "db";
final String driver = "com.mysql.jdbc.Driver";
final String table = "table";
public final Connection conn = null;
// Define listner
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//...Perform a task...
System.out.println("Reading Info.");
try {
Class.forName(driver);
try {
conn = DriverManager.getConnection(url+db,"root","pass");
Statement st = (Statement) conn.createStatement();
String sql = "";
st.executeUpdate(sql);
conn.close();
} catch (SQLException s) {
s.printStackTrace();
JOptionPane.showMessageDialog(null, "ERROR: Please try again!");
}
} catch (ClassNotFoundException cnfe){
JOptionPane.showMessageDialog(null, "ERROR:");
}
}
};
Timer timer = new Timer( 100 , taskPerformer);
timer.setRepeats(true);
timer.start();
Thread.sleep(100);
}
現在、次のエラーが表示されています。
スレッド「AWT-EventQueue-0」での例外 java.lang.Error: 未解決のコンパイルの問題: 最終的なローカル変数 conn は、外側の型で定義されているため、割り当てることができません