It seems that every time I want to perform a db query, I have to write the following:
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
Make a helper method?
public class DBHelper
{
public static Object run(string sql, List params, ResultHandler rhandler)
{
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;
try {
conn = dataSource.getConnection();
stmt = conn.prepareStatement(sql);
int i = 0;
for(Object p in params)
{
stmt.setObject(++i, p);
}
rset = stmt.executeQuery();
return rhandler.handle(rset);
} finally {
try { rset.close(); } catch(Exception e) { }
try { stmt.close(); } catch(Exception e) { }
try { conn.close(); } catch(Exception e) { }
}
}
}
public interface ResultHandler
{
public Object handle(ResultSet)
}
public class Test
{
public static void main(String[] args)
{
String s = (String)DBHelper.run("select * from mytable where col = ?",
Arrays.asList({"foo"}),
new ResultHandler
{
public Object handle(ResultSet r)
{
r.first();
return r.getString("col2");
}
}();
}
}