package org.sql2o.samples.javaedge; import org.hamcrest.CoreMatchers; import org.hamcrest.MatcherAssert; import org.junit.Test; import org.sql2o.Connection; import org.sql2o.Sql2o; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.MatcherAssert.*; /** * Created by lars on 09.04.14. */ public class AutoClosableTest { private final Sql2o sql2o = new Sql2o("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1","sa", ""); @Test public void testAutoClosable() { final String createSql = "create table testtable(id int identity primary key, val varchar(50))"; final String insertSql = "insert into testtable(val) values (:val)"; final String selectSql = "select * fom testtable"; final String selectCount = "select count(*) cnt from testtable"; try(Connection con = sql2o.beginTransaction()) { // create table and insert something in a transaction con.createQuery(createSql).executeUpdate(); con.createQuery(insertSql).addParameter("val", "foo").executeUpdate(); con.createQuery(insertSql).addParameter("val", "bar").executeUpdate(); con.commit(); } Long cnt = (Long)sql2o.createQuery(selectCount).executeScalar(); assertThat(cnt, is(equalTo(2l))); try(Connection con = sql2o.beginTransaction()) { con.createQuery(insertSql).addParameter("val", "something").executeUpdate(); con.createQuery(insertSql).addParameter("val", "We want to").executeUpdate(); con.createQuery(insertSql).addParameter("val", "rollback").executeUpdate(); // don't commit, and transaction will be rolled back. } cnt = (Long)sql2o.createQuery(selectCount).executeScalar(); assertThat(cnt, is(equalTo(2l))); } }