📄 resultsettest.java
字号:
// jTDS JDBC Driver for Microsoft SQL Server and Sybase// Copyright (C) 2004 The jTDS Project//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA//package net.sourceforge.jtds.test;import java.sql.*;import java.math.BigDecimal;import java.io.InputStream;import java.util.ArrayList;/** * @version 1.0 */public class ResultSetTest extends DatabaseTestCase { public ResultSetTest(String name) { super(name); } /** * Test BIT data type. */ public void testGetObject1() throws Exception { boolean data = true; Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #getObject1 (data BIT, minval BIT, maxval BIT)"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #getObject1 (data, minval, maxval) VALUES (?, ?, ?)"); pstmt.setBoolean(1, data); pstmt.setBoolean(2, false); pstmt.setBoolean(3, true); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data, minval, maxval FROM #getObject1"); assertTrue(rs.next()); assertTrue(rs.getBoolean(1)); assertTrue(rs.getByte(1) == 1); assertTrue(rs.getShort(1) == 1); assertTrue(rs.getInt(1) == 1); assertTrue(rs.getLong(1) == 1); assertTrue(rs.getFloat(1) == 1); assertTrue(rs.getDouble(1) == 1); assertTrue(rs.getBigDecimal(1).byteValue() == 1); assertEquals("1", rs.getString(1)); Object tmpData = rs.getObject(1); assertTrue(tmpData instanceof Boolean); assertEquals(true, ((Boolean) tmpData).booleanValue()); ResultSetMetaData resultSetMetaData = rs.getMetaData(); assertNotNull(resultSetMetaData); assertEquals(Types.BIT, resultSetMetaData.getColumnType(1)); assertFalse(rs.getBoolean(2)); assertTrue(rs.getBoolean(3)); assertFalse(rs.next()); stmt2.close(); rs.close(); } /** * Test TINYINT data type. */ public void testGetObject2() throws Exception { byte data = 1; Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #getObject2 (data TINYINT, minval TINYINT, maxval TINYINT)"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #getObject2 (data, minval, maxval) VALUES (?, ?, ?)"); pstmt.setByte(1, data); pstmt.setByte(2, Byte.MIN_VALUE); pstmt.setByte(3, Byte.MAX_VALUE); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data, minval, maxval FROM #getObject2"); assertTrue(rs.next()); assertTrue(rs.getBoolean(1)); assertTrue(rs.getByte(1) == 1); assertTrue(rs.getShort(1) == 1); assertTrue(rs.getInt(1) == 1); assertTrue(rs.getLong(1) == 1); assertTrue(rs.getFloat(1) == 1); assertTrue(rs.getDouble(1) == 1); assertTrue(rs.getBigDecimal(1).byteValue() == 1); assertEquals("1", rs.getString(1)); Object tmpData = rs.getObject(1); assertTrue(tmpData instanceof Integer); assertEquals(data, ((Integer) tmpData).byteValue()); ResultSetMetaData resultSetMetaData = rs.getMetaData(); assertNotNull(resultSetMetaData); assertEquals(Types.TINYINT, resultSetMetaData.getColumnType(1)); assertEquals(rs.getByte(2), Byte.MIN_VALUE); assertEquals(rs.getByte(3), Byte.MAX_VALUE); assertFalse(rs.next()); stmt2.close(); rs.close(); } /** * Test SMALLINT data type. */ public void testGetObject3() throws Exception { short data = 1; Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #getObject3 (data SMALLINT, minval SMALLINT, maxval SMALLINT)"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #getObject3 (data, minval, maxval) VALUES (?, ?, ?)"); pstmt.setShort(1, data); pstmt.setShort(2, Short.MIN_VALUE); pstmt.setShort(3, Short.MAX_VALUE); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data, minval, maxval FROM #getObject3"); assertTrue(rs.next()); assertTrue(rs.getBoolean(1)); assertTrue(rs.getByte(1) == 1); assertTrue(rs.getShort(1) == 1); assertTrue(rs.getInt(1) == 1); assertTrue(rs.getLong(1) == 1); assertTrue(rs.getFloat(1) == 1); assertTrue(rs.getDouble(1) == 1); assertTrue(rs.getBigDecimal(1).shortValue() == 1); assertEquals("1", rs.getString(1)); Object tmpData = rs.getObject(1); assertTrue(tmpData instanceof Integer); assertEquals(data, ((Integer) tmpData).shortValue()); ResultSetMetaData resultSetMetaData = rs.getMetaData(); assertNotNull(resultSetMetaData); assertEquals(Types.SMALLINT, resultSetMetaData.getColumnType(1)); assertEquals(rs.getShort(2), Short.MIN_VALUE); assertEquals(rs.getShort(3), Short.MAX_VALUE); assertFalse(rs.next()); stmt2.close(); rs.close(); } /** * Test INT data type. */ public void testGetObject4() throws Exception { int data = 1; Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #getObject4 (data INT, minval INT, maxval INT)"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #getObject4 (data, minval, maxval) VALUES (?, ?, ?)"); pstmt.setInt(1, data); pstmt.setInt(2, Integer.MIN_VALUE); pstmt.setInt(3, Integer.MAX_VALUE); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data, minval, maxval FROM #getObject4"); assertTrue(rs.next()); assertTrue(rs.getBoolean(1)); assertTrue(rs.getByte(1) == 1); assertTrue(rs.getShort(1) == 1); assertTrue(rs.getInt(1) == 1); assertTrue(rs.getLong(1) == 1); assertTrue(rs.getFloat(1) == 1); assertTrue(rs.getDouble(1) == 1); assertTrue(rs.getBigDecimal(1).intValue() == 1); assertEquals("1", rs.getString(1)); Object tmpData = rs.getObject(1); assertTrue(tmpData instanceof Integer); assertEquals(data, ((Integer) tmpData).intValue()); ResultSetMetaData resultSetMetaData = rs.getMetaData(); assertNotNull(resultSetMetaData); assertEquals(Types.INTEGER, resultSetMetaData.getColumnType(1)); assertEquals(rs.getInt(2), Integer.MIN_VALUE); assertEquals(rs.getInt(3), Integer.MAX_VALUE); assertFalse(rs.next()); stmt2.close(); rs.close(); } /** * Test BIGINT data type. */ public void testGetObject5() throws Exception { long data = 1; Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #getObject5 (data DECIMAL(28, 0), minval DECIMAL(28, 0), maxval DECIMAL(28, 0))"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #getObject5 (data, minval, maxval) VALUES (?, ?, ?)"); pstmt.setLong(1, data); pstmt.setLong(2, Long.MIN_VALUE); pstmt.setLong(3, Long.MAX_VALUE); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data, minval, maxval FROM #getObject5"); assertTrue(rs.next()); assertTrue(rs.getBoolean(1)); assertTrue(rs.getByte(1) == 1); assertTrue(rs.getShort(1) == 1); assertTrue(rs.getInt(1) == 1); assertTrue(rs.getLong(1) == 1); assertTrue(rs.getFloat(1) == 1); assertTrue(rs.getDouble(1) == 1); assertTrue(rs.getBigDecimal(1).longValue() == 1); assertEquals("1", rs.getString(1)); Object tmpData = rs.getObject(1); assertTrue(tmpData instanceof BigDecimal); assertEquals(data, ((BigDecimal) tmpData).longValue()); ResultSetMetaData resultSetMetaData = rs.getMetaData(); assertNotNull(resultSetMetaData); assertEquals(Types.DECIMAL, resultSetMetaData.getColumnType(1)); assertEquals(rs.getLong(2), Long.MIN_VALUE); assertEquals(rs.getLong(3), Long.MAX_VALUE); assertFalse(rs.next()); stmt2.close(); rs.close(); } /** * Test for bug [961594] ResultSet. */ public void testResultSetScroll1() throws Exception { int count = 125; Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #resultSetScroll1 (data INT)"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #resultSetScroll1 (data) VALUES (?)"); for (int i = 1; i <= count; i++) { pstmt.setInt(1, i); assertEquals(1, pstmt.executeUpdate()); } pstmt.close(); Statement stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rs = stmt2.executeQuery("SELECT data FROM #resultSetScroll1"); assertTrue(rs.last()); assertEquals(count, rs.getRow()); stmt2.close(); rs.close(); } /** * Test for bug [945462] getResultSet() return null if you use scrollable/updatable. */ public void testResultSetScroll2() throws Exception { Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #resultSetScroll2 (data INT)"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #resultSetScroll2 (data) VALUES (?)"); pstmt.setInt(1, 1); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); stmt2.executeQuery("SELECT data FROM #resultSetScroll2"); ResultSet rs = stmt2.getResultSet(); assertNotNull(rs); assertTrue(rs.next()); assertEquals(1, rs.getInt(1)); assertFalse(rs.next()); stmt2.close(); rs.close(); } /** * Test for bug [1028881] statement.execute() causes wrong ResultSet type. */ public void testResultSetScroll3() throws Exception { Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #resultSetScroll3 (data INT)"); stmt.execute("CREATE PROCEDURE #procResultSetScroll3 AS SELECT data FROM #resultSetScroll3"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #resultSetScroll3 (data) VALUES (?)"); pstmt.setInt(1, 1); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); // Test plain Statement Statement stmt2 = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); assertTrue("Was expecting a ResultSet", stmt2.execute("SELECT data FROM #resultSetScroll3")); ResultSet rs = stmt2.getResultSet(); assertEquals("ResultSet not scrollable", ResultSet.TYPE_SCROLL_INSENSITIVE, rs.getType()); rs.close(); stmt2.close(); // Test PreparedStatement pstmt = con.prepareStatement("SELECT data FROM #resultSetScroll3", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); assertTrue("Was expecting a ResultSet", pstmt.execute()); rs = pstmt.getResultSet(); assertEquals("ResultSet not scrollable", ResultSet.TYPE_SCROLL_INSENSITIVE, rs.getType()); rs.close(); pstmt.close(); // Test CallableStatement CallableStatement cstmt = con.prepareCall("{call #procResultSetScroll3}", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); assertTrue("Was expecting a ResultSet", cstmt.execute()); rs = cstmt.getResultSet(); assertEquals("ResultSet not scrollable", ResultSet.TYPE_SCROLL_INSENSITIVE, rs.getType()); rs.close(); cstmt.close(); } /** * Test for bug [1008208] 0.9-rc1 updateNull doesn't work.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -