如何在TimerTask中处理数据库连接

时间:2015-10-08 14:15:49

标签: java

我每4分钟安排一次Timer Task,其任务是将值插入/更新到mysql表中。

我的问题是,我是否需要为每次迭代(运行方法)生成DBConnection

我的代码的一部分

public class App 
{
    public static void main( String[] args )
    {
        TimerTask task = new RunMeTask();
        Timer timer = new Timer();
        timer.schedule(task, 1000,60000);
    }
}

public class RunMeTask extends TimerTask 
{
PreparedStatement inserpstmt = null;
Connection conn = null;
String insertsql = "";
    @Override
    public void run() {
        try {
            inserpstmt = conn.prepareStatement(insertsql);
            inserpstmt.setString(1, symbol);
            inserpstmt.setString(2, date);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

请提前告知我们

1 个答案:

答案 0 :(得分:0)

最好的模式是重用连接。如果TimerTask在容器内,请利用该基础结构,并且应该具有数据库连接池,甚至可以享受容器管理的事务的好处。

如果这对您不可行,请不要尝试自己池化连接。有一些实现方式,例如https://commons.apache.org/proper/commons-dbcp/