1 34 package smallsql.junit; 35 36 import java.sql.*; 37 38 39 43 public class TestResultSet extends BasicTestCase { 44 45 private static boolean init; 46 47 48 protected void setUp() throws Exception { 49 if(init) return; 50 Connection con = AllTests.getConnection(); 51 Statement st = con.createStatement(); 52 dropTable( con, "ResultSet"); 53 st.execute("Create Table ResultSet (i int identity, c varchar(30))"); 54 55 st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 56 ResultSet rs = st.executeQuery("Select * From ResultSet"); 57 58 rs.moveToInsertRow(); 59 rs.insertRow(); 60 rs.moveToInsertRow(); 61 rs.insertRow(); 62 init = true; 63 } 64 65 66 public void testScrollStates() throws Exception { 67 Connection con = AllTests.getConnection(); 68 Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 69 ResultSet rs = st.executeQuery("Select * From ResultSet Where 1=0"); 70 71 assertTrue("isBeforeFirst", rs.isBeforeFirst() ); 72 assertTrue("isAfterLast", rs.isAfterLast() ); 73 assertEquals("getRow", 0, rs.getRow() ); 74 75 rs.moveToInsertRow(); 76 rs.insertRow(); 77 78 rs.beforeFirst(); 79 assertTrue("isBeforeFirst", rs.isBeforeFirst() ); 80 assertFalse("isAfterLast", rs.isAfterLast() ); 81 assertEquals("getRow", 0, rs.getRow() ); 82 assertTrue("next", rs.next() ); 83 assertTrue("isFirst", rs.isFirst() ); 84 assertTrue("rowInserted", rs.rowInserted() ); 85 assertEquals("getRow", 1, rs.getRow() ); 86 assertTrue("isLast", rs.isLast() ); 87 assertFalse("next", rs.next() ); 88 assertFalse("isBeforeFirst", rs.isBeforeFirst() ); 89 assertTrue("isAfterLast", rs.isAfterLast() ); 90 assertEquals("getRow", 0, rs.getRow() ); 91 92 assertTrue("first", rs.first() ); 93 assertEquals("getRow", 1, rs.getRow() ); 94 95 assertFalse("previous", rs.previous() ); 96 assertEquals("getRow", 0, rs.getRow() ); 97 assertTrue("isBeforeFirst", rs.isBeforeFirst() ); 98 assertFalse("isAfterLast", rs.isAfterLast() ); 99 100 assertTrue("last", rs.last() ); 101 assertEquals("getRow", 1, rs.getRow() ); 102 assertTrue("isLast", rs.isLast() ); 103 104 rs.afterLast(); 105 assertFalse("isBeforeFirst", rs.isBeforeFirst() ); 106 assertTrue("isAfterLast", rs.isAfterLast() ); 107 assertEquals("getRow", 0, rs.getRow() ); 108 } 109 110 111 public void testScrollStatesGroupBy() throws Exception { 112 Connection con = AllTests.getConnection(); 113 Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 114 ResultSet rs = st.executeQuery("Select i,max(c) From ResultSet Group By i HAVING i=1"); 115 116 assertEquals("getConcurrency",ResultSet.CONCUR_READ_ONLY, rs.getConcurrency()); 117 assertTrue("isBeforeFirst", rs.isBeforeFirst() ); 118 assertFalse("isAfterLast", rs.isAfterLast() ); 119 assertEquals("getRow", 0, rs.getRow() ); 120 121 rs.beforeFirst(); 122 assertTrue("isBeforeFirst", rs.isBeforeFirst() ); 123 assertFalse("isAfterLast", rs.isAfterLast() ); 124 assertEquals("getRow", 0, rs.getRow() ); 125 assertTrue("next", rs.next() ); 126 assertTrue("isFirst", rs.isFirst() ); 127 assertFalse("rowInserted", rs.rowInserted() ); 128 assertEquals("getRow", 1, rs.getRow() ); 129 assertTrue("isLast", rs.isLast() ); 130 assertFalse("next", rs.next() ); 131 assertFalse("isBeforeFirst", rs.isBeforeFirst() ); 132 assertTrue("isAfterLast", rs.isAfterLast() ); 133 assertEquals("getRow", 0, rs.getRow() ); 134 135 assertTrue("first", rs.first() ); 136 assertEquals("getRow", 1, rs.getRow() ); 137 138 assertFalse("previous", rs.previous() ); 139 assertEquals("getRow", 0, rs.getRow() ); 140 assertTrue("isBeforeFirst", rs.isBeforeFirst() ); 141 assertFalse("isAfterLast", rs.isAfterLast() ); 142 143 assertTrue("last", rs.last() ); 144 assertEquals("getRow", 1, rs.getRow() ); 145 assertTrue("isLast", rs.isLast() ); 146 147 rs.afterLast(); 148 assertFalse("isBeforeFirst", rs.isBeforeFirst() ); 149 assertTrue("isAfterLast", rs.isAfterLast() ); 150 assertEquals("getRow", 0, rs.getRow() ); 151 } 152 153 154 public void testUpdate() throws Exception { 155 Connection con = AllTests.getConnection(); 156 Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 157 ResultSet rs; 158 159 160 rs = st.executeQuery("Select * From ResultSet"); 162 assertTrue("next", rs.next()); 163 assertEquals("getRow", 1, rs.getRow() ); 164 int id = rs.getInt("i"); 165 rs.updateShort("c", (short)123 ); 166 assertEquals( (short)123, rs.getShort("c") ); 167 assertEquals( id, rs.getInt("i") ); rs.updateRow(); 169 assertEquals( (short)123, rs.getShort("c") ); 170 assertFalse( rs.rowUpdated() ); assertFalse( rs.rowInserted() ); 172 assertFalse( rs.rowDeleted() ); 173 assertEquals("getRow", 1, rs.getRow() ); 174 175 rs = st.executeQuery("Select * From ResultSet"); 177 assertTrue("next", rs.next()); 178 rs.updateByte("c", (byte)66 ); 179 assertEquals( (byte)66, rs.getByte("c") ); 180 rs.updateRow(); 181 assertEquals( (short)66, rs.getShort("c") ); 182 } 183 184 185 188 public void testUpdateAndScroll() throws Exception { 189 final Object value = "UpdateAndScroll"; 190 Connection con = AllTests.getConnection(); 191 Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 192 ResultSet rs = st.executeQuery("Select * From ResultSet"); 193 194 assertTrue("start", rs.last()); 196 rs.updateObject("c", value, Types.VARCHAR ); 197 assertEquals("getObject", value, rs.getObject("c")); 198 assertTrue("first", rs.first()); 199 assertNotSame("getObject", value, rs.getObject("c")); 200 201 assertTrue("start", rs.first()); 203 rs.updateObject("c", value, Types.VARCHAR ); 204 assertEquals("getObject", value, rs.getObject("c")); 205 assertTrue("next", rs.next()); 206 assertNotSame("getObject", value, rs.getObject("c")); 207 208 assertTrue("start", rs.last()); 210 rs.updateObject("c", value ); 211 assertEquals("getObject", value, rs.getObject("c")); 212 assertTrue("previous", rs.previous()); 213 assertNotSame("getObject", value, rs.getObject("c")); 214 215 assertTrue("start", rs.first()); 217 rs.updateObject("c", value, Types.VARCHAR ); 218 assertEquals("getObject", value, rs.getObject("c")); 219 assertTrue("last", rs.last()); 220 assertNotSame("getObject", value, rs.getObject("c")); 221 222 assertTrue("start", rs.first()); 224 rs.updateObject("c", value, Types.VARCHAR ); 225 assertEquals("getObject", value, rs.getObject("c")); 226 rs.refreshRow(); 227 assertNotSame("getObject", value, rs.getObject("c")); 228 } 229 230 231 public void testDelete() throws Exception { 232 Connection con = AllTests.getConnection(); 233 Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); 234 ResultSet rs = st.executeQuery("Select * From ResultSet Where i>1"); 235 236 assertTrue("next", rs.next()); 237 assertFalse( rs.rowDeleted() ); 238 rs.deleteRow(); 239 assertTrue( rs.rowDeleted() ); 240 } 241 242 243 public void testOther() throws Exception { 244 Connection con = AllTests.getConnection(); 245 Statement st = con.createStatement(); 246 ResultSet rs = st.executeQuery("Select * From ResultSet"); 247 248 assertEquals(st, rs.getStatement()); 249 250 rs.clearWarnings(); 252 assertNull(rs.getWarnings()); 253 254 rs.setFetchDirection(ResultSet.FETCH_FORWARD); 255 assertEquals( rs.getFetchDirection(), ResultSet.FETCH_FORWARD); 256 257 rs.setFetchDirection(ResultSet.FETCH_REVERSE); 258 assertEquals( rs.getFetchDirection(), ResultSet.FETCH_REVERSE); 259 260 rs.setFetchSize(123); 261 assertEquals( rs.getFetchSize(), 123); 262 } 263 } | Popular Tags |