📄 jdbc3test.java
字号:
package net.sourceforge.jtds.test;import java.sql.Statement;import java.sql.ResultSet;import java.sql.SQLException;/** * Test for miscellaneous JDBC 3.0 features. * * @version $Id: JDBC3Test.java,v 1.2 2005/04/25 11:47:01 alin_sinpalean Exp $ */public class JDBC3Test extends TestBase { public JDBC3Test(String name) { super(name); } /** * Test return of multiple open result sets from one execute. */ public void testMultipleResults() throws Exception { Statement stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); // // Create 4 test tables // for (int rs = 1; rs <= 4; rs++) { stmt.execute("CREATE TABLE #TESTRS" + rs + " (id int, data varchar(255))"); for (int row = 1; row <= 10; row++) { assertEquals(1, stmt.executeUpdate("INSERT INTO #TESTRS" + rs + " VALUES(" + row + ", 'TABLE " + rs + " ROW " + row + "')")); } } assertTrue(stmt.execute( "SELECT * FROM #TESTRS1\r\n" + "SELECT * FROM #TESTRS2\r\n" + "SELECT * FROM #TESTRS3\r\n" + "SELECT * FROM #TESTRS4\r\n")); ResultSet rs = stmt.getResultSet(); assertTrue(rs.next()); assertEquals("TABLE 1 ROW 1", rs.getString(2)); // Get RS 2 keeping RS 1 open assertTrue(stmt.getMoreResults(Statement.KEEP_CURRENT_RESULT)); ResultSet rs2 = stmt.getResultSet(); assertTrue(rs2.next()); assertEquals("TABLE 2 ROW 1", rs2.getString(2)); // Check RS 1 still open and on row 1 assertEquals("TABLE 1 ROW 1", rs.getString(2)); // Read a cached row from RS 1 assertTrue(rs.next()); assertEquals("TABLE 1 ROW 2", rs.getString(2)); // Close RS 2 but keep RS 1 open and get RS 3 assertTrue(stmt.getMoreResults(Statement.CLOSE_CURRENT_RESULT)); ResultSet rs3 = stmt.getResultSet(); assertTrue(rs3.next()); assertEquals("TABLE 3 ROW 1", rs3.getString(2)); // Check RS 2 is closed try { assertEquals("TABLE 2 ROW 1", rs2.getString(2)); fail("Expected RS 2 to be closed!"); } catch (SQLException e) { // Ignore } // Check RS 1 is still open assertEquals("TABLE 1 ROW 2", rs.getString(2)); // Close all result sets and get RS 4 assertTrue(stmt.getMoreResults(Statement.CLOSE_ALL_RESULTS)); ResultSet rs4 = stmt.getResultSet(); assertTrue(rs4.next()); assertEquals("TABLE 4 ROW 1", rs4.getString(2)); // check RS 1 is now closed as well try { assertEquals("TABLE 1 ROW 2", rs.getString(2)); fail("Expected RS 1 to be closed!"); } catch (SQLException e) { // Ignore } assertFalse(stmt.getMoreResults()); stmt.close(); } /** * Test closing a <code>ResultSet</code> when it's out of scope. * <p/> * If a finalize() method which tries to call close() is added to * JtdsResultSet the next() calls will be executed concurrently with any * other result processing, with no synchronization whatsoever. */ public void testSocketConcurrency5() throws Exception { Statement stmt = con.createStatement(); assertTrue(stmt.execute( "SELECT 1 SELECT 2, 3")); ResultSet rs = stmt.getResultSet(); assertTrue(stmt.getMoreResults(Statement.KEEP_CURRENT_RESULT)); ResultSet rs2 = stmt.getResultSet(); assertTrue(rs.next()); assertEquals(1, rs.getInt(1)); assertFalse(rs.next()); rs.close(); assertTrue(rs2.next()); assertEquals(2, rs2.getInt(1)); assertEquals(3, rs2.getInt(2)); assertFalse(rs2.next()); rs2.close(); stmt.close(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -