1 24 25 package org.objectweb.cjdbc.scenario.raidb1.driver; 26 27 import java.sql.Connection ; 28 import java.sql.ResultSet ; 29 import java.sql.Statement ; 30 31 import org.objectweb.cjdbc.scenario.templates.Raidb1Template; 32 33 39 public class UpdatableResultSetScenario extends Raidb1Template 40 { 41 42 String tableName; 43 44 47 protected void setUp() 48 { 49 tableName = ("test" + System.currentTimeMillis()).toUpperCase(); 50 super.setUp(); 51 52 try 54 { 55 Connection con = getCJDBCConnection(); 56 Statement stmt = con.createStatement(); 57 stmt.executeUpdate("CREATE TABLE " + tableName + "(" 58 + "ACCOUNT VARCHAR(20) NOT NULL, AMOUNT INTEGER, BLOCKED BOOLEAN, " 59 + "PRIMARY KEY(ACCOUNT))"); 60 stmt.close(); 61 con.close(); 62 } 63 catch (Exception e) 64 { 65 } 66 } 67 68 71 protected void tearDown() 72 { 73 try 75 { 76 Connection con = getCJDBCConnection(); 77 Statement stmt = con.createStatement(); 78 stmt.executeUpdate("DROP TABLE " + tableName); 79 stmt.close(); 80 con.close(); 81 } 82 catch (Exception e) 83 { 84 } 85 86 super.tearDown(); 87 } 88 89 94 public void testInsertRow() throws Exception 95 { 96 Connection con = getCJDBCConnection(); 97 Statement stmt = con.createStatement( 98 ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); 99 ResultSet res = stmt.executeQuery("SELECT * FROM " + tableName); 100 101 res.moveToInsertRow(); 103 104 assertNull(res.getString(1)); 105 res.updateString(1, "111-2222222-33"); 106 assertEquals(res.getString(1), "111-2222222-33"); 107 108 assertEquals(res.getInt(2), 0); 109 res.updateInt(2, 1000); 110 assertEquals(res.getInt(2), 1000); 111 112 assertFalse(res.getBoolean(3)); 113 res.updateBoolean(3, true); 114 assertTrue(res.getBoolean(3)); 115 116 res.insertRow(); 117 118 res.next(); 120 assertEquals(res.getString(1), "111-2222222-33"); 121 assertEquals(res.getInt(2), 1000); 122 assertTrue(res.getBoolean(3)); 123 res.close(); 124 125 res = stmt.executeQuery("SELECT * FROM " + tableName); 127 res.next(); 128 assertEquals(res.getString(1), "111-2222222-33"); 129 assertEquals(res.getInt(2), 1000); 130 res.close(); 132 133 stmt.close(); 135 con.close(); 136 } 137 138 143 public void testDeleteRow() throws Exception 144 { 145 Connection con = getCJDBCConnection(); 146 Statement stmt = con.createStatement(); 147 stmt.executeUpdate("INSERT INTO " + tableName 148 + " VALUES ('111-2222222-33', 1000, TRUE)"); 149 stmt.close(); 150 151 stmt = con.createStatement( 152 ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); 153 ResultSet res = stmt.executeQuery("SELECT * FROM " + tableName); 154 155 res.next(); 157 res.deleteRow(); 158 159 assertFalse(res.next()); 161 res.close(); 162 163 res = stmt.executeQuery("SELECT * FROM " + tableName); 165 assertFalse(res.next()); 166 167 stmt.close(); 169 con.close(); 170 } 171 172 177 public void testUpdateRow() throws Exception 178 { 179 Connection con = getCJDBCConnection(); 180 Statement stmt = con.createStatement(); 181 stmt.executeUpdate("INSERT INTO " + tableName 182 + " VALUES ('111-2222222-33', 1000, TRUE)"); 183 stmt.close(); 184 185 stmt = con.createStatement( 186 ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); 187 ResultSet res = stmt.executeQuery("SELECT * FROM " + tableName); 188 189 res.next(); 191 192 assertEquals(res.getString(1), "111-2222222-33"); 193 res.updateString(1, "777-8888888-99"); 194 assertEquals(res.getString(1), "777-8888888-99"); 195 196 assertEquals(res.getInt(2), 1000); 197 res.updateInt(2, 2000); 198 assertEquals(res.getInt(2), 2000); 199 200 assertTrue(res.getBoolean(3)); 201 res.updateBoolean(3, false); 202 assertFalse(res.getBoolean(3)); 203 204 res.updateRow(); 205 206 res.first(); 208 assertEquals(res.getString(1), "777-8888888-99"); 209 assertEquals(res.getInt(2), 2000); 210 assertFalse(res.getBoolean(3)); 211 res.close(); 212 213 res = stmt.executeQuery("SELECT * FROM " + tableName); 215 res.next(); 216 assertEquals(res.getString(1), "777-8888888-99"); 217 assertEquals(res.getInt(2), 2000); 218 assertFalse(res.getBoolean(3)); 219 res.close(); 220 221 stmt.close(); 223 con.close(); 224 } 225 226 231 public void testRefreshRow() throws Exception 232 { 233 Connection con = getCJDBCConnection(); 234 Statement stmt = con.createStatement(); 235 stmt.executeUpdate("INSERT INTO " + tableName 236 + " VALUES ('111-2222222-33', 1000, TRUE)"); 237 238 Statement stmt2 = con.createStatement( 239 ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE); 240 ResultSet res = stmt2.executeQuery("select * from " + tableName); 241 242 stmt.executeUpdate("UPDATE " + tableName + " SET AMOUNT = 2000," 244 + " BLOCKED = FALSE WHERE ACCOUNT = '111-2222222-33'"); 245 246 res.next(); 248 res.refreshRow(); 249 assertEquals(res.getString(1), "111-2222222-33"); 250 assertEquals(res.getInt(2), 2000); 251 assertFalse(res.getBoolean(3)); 252 res.close(); 253 254 stmt2.close(); 256 stmt.close(); 257 con.close(); 258 } 259 } 260 | Popular Tags |