Package org.postgresql.test.jdbc4.jdbc41

Source Code of org.postgresql.test.jdbc4.jdbc41.CloseOnCompletionTest

package org.postgresql.test.jdbc4.jdbc41;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import junit.framework.TestCase;

import org.postgresql.test.TestUtil;

public class CloseOnCompletionTest extends TestCase
{

    private Connection _conn;

    public CloseOnCompletionTest(String name)
    {
        super(name);
    }

    protected void setUp() throws Exception
    {
        _conn = TestUtil.openDB();
        TestUtil.createTable(_conn, "table1", "id integer");
    }

    protected void tearDown() throws SQLException
    {
        TestUtil.dropTable(_conn, "table1");
        TestUtil.closeDB( _conn );
    }

    /**
     * Test that the statement is not automatically closed if we do not ask for it
     */
    public void testWithoutCloseOnCompletion() throws SQLException
    {
        Statement stmt = _conn.createStatement();

        ResultSet rs = stmt.executeQuery(TestUtil.selectSQL("table1", "*"));
        rs.close();
        assertFalse(stmt.isClosed());
    }

    /**
     * Test the behavior of closeOnCompletion with a single result set
     */
    public void testSingleResultSet() throws SQLException
    {
        Statement stmt = _conn.createStatement();
        stmt.closeOnCompletion();

        ResultSet rs = stmt.executeQuery(TestUtil.selectSQL("table1", "*"));
        rs.close();
        assertTrue(stmt.isClosed());
    }

    /**
     * Test the behavior of closeOnCompletion with a multiple result sets
     */
    public void testMultipleResultSet() throws SQLException
    {
        Statement stmt = _conn.createStatement();
        stmt.closeOnCompletion();

        stmt.execute(TestUtil.selectSQL("table1", "*") + ";" +
                     TestUtil.selectSQL("table1", "*") + ";");
        ResultSet rs = stmt.getResultSet();
        rs.close();
        assertFalse(stmt.isClosed());
        stmt.getMoreResults();
        rs = stmt.getResultSet();
        rs.close();
        assertTrue(stmt.isClosed());
    }

    /**
     * Test that when execution does not produce any result sets,
     * closeOnCompletion has no effect (spec) 
     */
    public void testNoResultSet() throws SQLException
    {
        Statement stmt = _conn.createStatement();
        stmt.closeOnCompletion();

        stmt.executeUpdate(TestUtil.insertSQL("table1", "1"));
        assertFalse(stmt.isClosed());
    }
}
TOP

Related Classes of org.postgresql.test.jdbc4.jdbc41.CloseOnCompletionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.