1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License. 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilsonpackage libcore.java.sql; 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.BatchUpdateException; 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.PreparedStatement; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.ResultSet; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.SQLException; 232c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpeimport java.sql.SQLFeatureNotSupportedException; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.SQLWarning; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.sql.Statement; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.logging.Logger; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 2999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilsonpublic final class OldStatementTest extends OldSQLTest { 30f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testAddBatch() throws SQLException { 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch("INSERT INTO zoo VALUES (3,'Tuzik','dog')"); 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch("INSERT INTO zoo VALUES (4,'Mashka','cat')"); 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] updateCounts = st.executeBatch(); 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(2, updateCounts.length); 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1, updateCounts[0]); 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1, updateCounts[1]); 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch(""); 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeBatch(); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException is not thrown"); 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch(null); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeBatch(); 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 7799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testClearWarnings() throws SQLException { 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute("select animals from zoo"); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.clearWarnings(); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SQLWarning w = st.getWarnings(); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(w); 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 10399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testGetWarnings() throws SQLException { 104f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int errorCode1 = -1; 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int errorCode2 = -1; 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute("select animals from zoooo"); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException was not thrown"); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project errorCode1 = e.getErrorCode(); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 117f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 11899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson SQLWarning wrs = st.getWarnings(); 11999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertNull(wrs); 12099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int errorCode1 = -1; 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int errorCode2 = -1; 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute("select animals from zoooo"); 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project errorCode1 = e.getErrorCode(); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SQLWarning wrs = st.getWarnings(); 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(wrs); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected Exception: " + e.getMessage()); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute("select horse from zoooooo"); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project errorCode2 = e.getErrorCode(); 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project SQLWarning wrs = st.getWarnings(); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(errorCode1, wrs.getErrorCode()); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(wrs.getNextWarning()); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(errorCode2, wrs.getErrorCode()); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Unexpected Exception: " + e.getMessage()); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 154f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testClearBatch() throws SQLException { 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 165f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch("INSERT INTO zoo VALUES (3,'Tuzik','dog'); "); 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch("INSERT INTO zoo VALUES (4,'Mashka','cat')"); 170f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.clearBatch(); 172f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] updateCounts = st.executeBatch(); 174f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < updateCounts.length; i++) { 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(0, updateCounts[i]); 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch(""); 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeBatch(); 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException is not thrown"); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch(null); 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeBatch(); 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 21399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO not pass on SQLite and RI. 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testExecute() throws SQLException { 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries = { 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table if exists hutch", 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));", 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');", 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');", 222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "select animal_id, address from hutch where animal_id=1;", 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create view address as select address from hutch where animal_id=2", 224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;" }; 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean[] results = {false, false, false, false, false, true, false, 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project false, false}; 227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries.length; i++) { 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean res = st.execute(queries[i]); 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("different result for statement no. "+i, results[i], res); 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException is thrown: " + e.getMessage()); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ee) { 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] inc_queries = { 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo_zoo set name='Masha', family='cat' where id=5;", 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table hutchNO", 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (1, 2, 10);", 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "select animal_id, from hutch where animal_id=1;", 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;", "", null }; 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < inc_queries.length; i++) { 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute(inc_queries[i]); 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException is not thrown for query: " + inc_queries[i]); 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 264f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO not supported 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testExecute_String_int() { 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries = { 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table if exists hutch", 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));", 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');", 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');", 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "select animal_id, address from hutch where animal_id=1;", 277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create view address as select address from hutch where animal_id=2", 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;" }; 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries.length; i++) { 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute(queries[i], Statement.NO_GENERATED_KEYS); 285f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet rs = st.getGeneratedKeys(); 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(rs.next()); 288f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 296f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 298f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries.length; i++) { 300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute(queries[i], Statement.RETURN_GENERATED_KEYS); 304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected: Not supported"); 305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet rs = st.getGeneratedKeys(); 307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Revise test implemenation for feature impl. has changed"); 308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(rs.next()); 309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 317f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 32199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // statement.close() does not wrap up 32299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testGetConnection() throws SQLException { 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertSame(conn, st.getConnection()); 327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 333f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getConnection(); 337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 34399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // statement.close() does not wrap up 34499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testGetFetchDirection() throws SQLException { 345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.FETCH_UNKNOWN, st.getFetchDirection()); 349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 355f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.setFetchDirection(ResultSet.FETCH_FORWARD); 359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.FETCH_FORWARD, st.getFetchDirection()); 360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected: not supported"); 361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 369f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getFetchDirection(); 372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO not supported 379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testSetFetchDirection() { 380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.setFetchDirection(ResultSet.FETCH_FORWARD); 384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeQuery("select * from zoo;"); 385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Revise test implemenation for feature impl. has changed"); 386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// assertEquals(ResultSet.FETCH_FORWARD, st.getFetchDirection()); 387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// fail("SQLException is thrown: " + e.getMessage()); 389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // statement.close() does not wrap up 39999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testGetFetchSize() throws SQLException { 400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute("select * from zoo;"); 404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1, st.getFetchSize()); 405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 411f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getFetchSize(); 415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 42199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO not supported 42299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testSetFetchSize() throws SQLException { 423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int rows = 100; 427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < rows; i++) { 428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.setFetchSize(i); 430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(i, st.getFetchSize()); 431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException sqle) { 4322c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe // getFetchSize() hardcoded to 1. 4332c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe assertEquals("fetch size not 1", sqle.getMessage()); 434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.setFetchSize(-1); 439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException is not thrown"); 440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException sqle) { 441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 45399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO not supported 45499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testSetMaxFieldSize() throws SQLException { 455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 300; i += 50) { 459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.setMaxFieldSize(i); 461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(i, st.getMaxFieldSize()); 462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Revise test implemenation for feature impl. has changed"); 463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException sqle) { 464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not supported", sqle.getMessage()); 465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 47599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO not supported 47699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testGetMaxFieldSize() throws SQLException { 477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 200; i < 500; i += 50) { 481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.setMaxFieldSize(i); 483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Revise test implemenation for feature impl. has changed"); 484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException sqle) { 485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not supported", sqle.getMessage()); 486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 49699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testMaxRows() throws SQLException { 497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 500f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes for (int i = 0; i < 300; i += 50) { 50199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.setMaxRows(i); 50299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(i, st.getMaxRows()); 50399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson ResultSet r = st.executeQuery("select * from zoo;"); 50499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson int rowCount = 0; 50599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson while (r.next()) { 50699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson ++rowCount; 50799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 50899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson if (i == 0) { 50999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // 0 means unlimited. 51099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue("rowCount=" + rowCount + " i=" + i, rowCount > i); 51199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } else { 51299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue("rowCount=" + rowCount + " i=" + i, rowCount <= i); 513adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 51499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson r.close(); 515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.setMaxRows(-1); 518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException isn't thrown"); 519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException sqle) { 520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expecteds 521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 53099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson /** not passed according to spec; should release resources immediately */ 53199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testClose() throws SQLException { 532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet res = null; 534adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries = { 536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into zoo (id, name, family) values (3, 'Vorobey', 'sparrow');", 538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into zoo (id, name, family) values (4, 'Slon', 'elephant');", 539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "select * from zoo"}; 540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries.length; i++) { 542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute(queries[i]); 543adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project res = st.getResultSet(); 545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(res); 546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(res.next()); 547adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 554adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // test release of resources: 556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // this code should throw an exception as the db is not available 557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // anymore in fact every resource which is used afterwards should throw 558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // an SQLException. 559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project res.next(); 561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok 564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO not supported 568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testExecute_String_intArray() { 569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries = { 572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert zoo(id, name, family) values (3, 'Vorobey', 'sparrow');", 574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert zoo(id, name, family) values (4, 'Slon', 'elephant');", 575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "select * from zoo" }; 576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Vector<int[]> array = new Vector<int[]>(); 577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(null); 578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] { 1, 2, 3 }); 579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] { 1, 2, 10, 100 }); 580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] {}); 581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries.length; i++) { 584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute(queries[i], (int[]) array.elementAt(i)); 585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException expected: not supported"); 586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Revise test implemenation for feature impl. has changed"); 589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(st.getResultSet()); 590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(st.getResultSet()); 592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok: not supported 595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project// fail("SQLException is thrown: " + e.getMessage()); 596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testExecute_String_StringArray() { 605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries = { 608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert zoo(id, name, family) values (3, 'Vorobey', 'sparrow');", 610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert zoo(id, name, family) values (4, 'Slon', 'elephant');", 611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "select * from zoo" }; 612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Vector<String[]> array = new Vector<String[]>(); 613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(null); 614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new String[] { "", "", "", "", "", "", "", "" }); 615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new String[] { "field 1", "", "field2" }); 616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new String[] { "id", "family", "name" }); 617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries.length; i++) { 620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute(queries[i], (String[]) array.elementAt(i)); 621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected: not supported"); 622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Revise test implemenation for feature impl. has changed"); 624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(st.getResultSet()); 625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(st.getResultSet()); 627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 628adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok: not supported 629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 633f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 63699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // always returns 1 for no. of updates 63799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testExecuteBatch() throws SQLException { 638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries = { 640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table if exists hutch", 642adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));", 643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');", 644adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');", 645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create view address as select address from hutch where animal_id=2", 646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;" }; 647f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] wrongQueries = { 649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where;", 650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table if exists hutch;", 651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create view address as select address from hutch where animal_id=2;", 652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;" }; 653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] result = { 1, 1, 1, 1, 1, 1, 1, 1 }; 655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 656f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //Exception test 658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 660adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(0, st.executeBatch().length); 661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < wrongQueries.length; i++) { 662adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch(wrongQueries[i]); 663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeBatch(); 665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("BatchupdateException expected"); 666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (BatchUpdateException e) { 667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 673f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 674f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(0, st.executeBatch().length); 678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries.length; i++) { 679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch(queries[i]); 680adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 681adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int[] resArray = st.executeBatch(); 682adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(java.util.Arrays.equals(result, resArray)); 683adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 684adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 685adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 686adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 687adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 688adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 689adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 690adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 691adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 692adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.addBatch("select * from zoo"); 693adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeBatch(); 694adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 695adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (BatchUpdateException bue) { 696adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok select returns a resultSet 697adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 698adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 701adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //Exception test 704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeBatch(); 707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException not thrown"); 708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 71399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // Does throw an exception on non select statement. 71499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testExecuteQuery_String() throws SQLException { 715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries1 = { "select * from zoo", 717adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "select name, family from zoo where id = 1" }; 718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries2 = { 720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table if exists hutch", 722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));", 723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');", 724adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');", 725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create view address as select address from hutch where animal_id=2", 726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;", "select from zoo" }; 727f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 729f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 731adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries1.length; i++) { 733adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet rs = st.executeQuery(queries1[i]); 735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(rs); 736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException sqle) { 737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException is thrown for query: " + queries1[i]); 738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 739adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ee) { 744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 746f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 747f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes // queries which do not produce a ResultSet -> exception testing 748f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries2.length; i++) { 752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet rs = st.executeQuery(queries2[i]); 754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(rs); 755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("SQLException is not thrown for query: " + queries2[i]); 756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException sqle) { 757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // expected 758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ee) { 764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 765f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 76999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson * Spec is not precise enough: should be: number of rows affected. eg. to be 77099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson * consistent for deletes: 'delete from s1;' should be different from 77199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson * 'delete from s1 where c1 = 1;' 772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testExecuteUpdate_String() throws SQLException { 774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries1 = { 776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 777adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table if exists hutch", 778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));", 779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');", 780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');", 781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create view address as select address from hutch where animal_id=2;", 782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;"}; 783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 784adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String queries2 = "select * from zoo;"; 785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 786adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries1.length; i++) { 79099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson int count = st.executeUpdate(queries1[i]); 79199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertTrue(count > 0); 792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 79499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(0, st.executeUpdate(queries2)); 795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ee) { 800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 802f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 803f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes // test return value for specific numbers 804f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement stat = conn.createStatement(); 806f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // there are 0 rows created therefore 0 should be returned. 808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(0 ,stat.executeUpdate("create table s1 (c1);")); 809f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1, stat.executeUpdate("insert into s1 values (0);")); 811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1, stat.executeUpdate("insert into s1 values (1);")); 812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1, stat.executeUpdate("insert into s1 values (2);")); 813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1,stat.executeUpdate("delete from s1 where c1 = 1;")); 814adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(2, stat.executeUpdate("update s1 set c1 = 5;")); 815f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 81699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // analogous to statement before, delete all should return 2 817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(2,stat.executeUpdate("delete from s1;")); 818f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // there are no rows in table: 0 should be returned 820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(0, stat.executeUpdate("drop table s1;")); 821f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 822f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes stat.executeUpdate("create table s1 (c1);"); 823adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project stat.executeUpdate("insert into s1 values (0);"); 824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project stat.executeUpdate("insert into s1 values (1);"); 825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project stat.executeUpdate("insert into s1 values (2);"); 826f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // there are 3 rows in table: 3 should be returned 828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(3, stat.executeUpdate("drop table s1;")); 829f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project stat.close(); 831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 83399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO executeUpdate(String sql, int[] columnIndexes) is not supported 8342c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe public void testExecuteUpdate_String_intArray() throws SQLException { 835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries1 = { 838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table if exists hutch", 840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));", 841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');", 842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');", 843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create view address as select address from hutch where animal_id=2", 844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;" }; 845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Vector<int[]> array = new Vector<int[]>(); 847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(null); 848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] { 1, 2, 3 }); 849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] { 1, 2, 10, 100 }); 850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] {}); 851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] { 100, 200 }); 852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] { -1, 0 }); 853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] { 0, 0, 0, 1, 2, 3 }); 854adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new int[] { -100, -200 }); 855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 856adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries1.length; i++) { 858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeUpdate(queries1[i], (int[]) array.elementAt(i)); 859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 8612c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe } catch (SQLFeatureNotSupportedException e) { 8622c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe // expected 863adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 868f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 870adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 87199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // executeUpdate(String sql, int autoGeneratedKeys) is not supported 872adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testExecuteUpdate_String_int() { 873adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries = { 874adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 875adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table if exists hutch", 876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));", 877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');", 878adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');", 879adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "select animal_id, address from hutch where animal_id=1;", 880adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create view address as select address from hutch where animal_id=2", 881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;" }; 882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 883adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet rs = null; 885adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 887adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeUpdate(queries[1], Statement.NO_GENERATED_KEYS); 888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project rs = st.getGeneratedKeys(); 889adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(rs.next()); 890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected: not supported"); 891adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 893adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project rs.close(); 896adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ee) { 898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 899adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 900f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 901adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeUpdate(queries[1], Statement.RETURN_GENERATED_KEYS); 904adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project rs = st.getGeneratedKeys(); 905adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(rs.next()); 906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected: not supported"); 907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 908adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 911adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project rs.close(); 912adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 913adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception ee) { 914adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 915adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 916adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 917adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 91899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO executeUpdate(String sql, String[] columnNames) is not supported 9192c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe public void testExecuteUpdate_String_StringArray() throws SQLException { 920adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 921adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 922adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries = { 923adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=2;", 924adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop table if exists hutch", 925adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create table hutch (id integer not null, animal_id integer, address char(20), primary key (id));", 926adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (1, 2, 'Birds-house, 1');", 927adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into hutch (id, animal_id, address) values (2, 1, 'Horse-house, 5');", 928adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "create view address as select address from hutch where animal_id=2", 929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "drop view address;", "drop table hutch;" }; 930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 931adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Vector<String[]> array = new Vector<String[]>(); 932adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(null); 933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new String[] { "", "", "", "", "", "", "", "" }); 934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new String[] { "field 1", "", "field2" }); 935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new String[] { "id", "family", "name" }); 936adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array 937adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .addElement(new String[] { "id", null, "family", null, 938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "name" }); 939adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new String[] { "id", " ", "name" }); 940adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new String[] { null, null, null, null }); 941adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project array.addElement(new String[] { " ", "123 21", "~!@#$%^&*()_+ ", 942adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project null }); 943adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < queries.length; i++) { 946adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeUpdate(queries[i], (String[]) array.elementAt(i)); 947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Revise test implemenation for feature impl. has changed"); 948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 9492c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe } catch (SQLFeatureNotSupportedException e) { 9502c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe // expected 951adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 954adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 955adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 956f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 957adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 958adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 95999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // statement.close() does not wrap up 96099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testGetUpdateCount() throws SQLException { 961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String query = "update zoo set name='Masha', family='cat' where id=2;"; 964adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 965adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeUpdate(query); 966adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(1, st.getUpdateCount()); 967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project query = "update zoo set name='Masha', family='cat' where id=5;"; 968adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.executeUpdate(query); 969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(0, st.getUpdateCount()); 970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 971adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 975f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes } 976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // statment closed : Exception test 977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getUpdateCount(); 979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 982adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 984f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 9852c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe public void testGeneratedKeys() throws SQLException { 986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String insert = "insert into zoo (id, name, family) values (8, 'Tuzik', 'dog');"; 989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNull(st.getGeneratedKeys()); 991adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Fail: statement does not fail"); 9922c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe } catch (SQLFeatureNotSupportedException e) { 9932c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe // expected 994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 996f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 99799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO setCursorName() is not supported 9982c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe public void testSetCursorName() throws SQLException { 999adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 1000adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1001adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String select = "select * from zoo"; 1002adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 1003adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.setCursorName("test"); 1004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Fail: statement does not fail"); 10052c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe } catch (SQLFeatureNotSupportedException e) { 10062c1802d919ce043706c38de22cb37a2f081412fbJeremy Sharpe // expected 1007adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1008adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1009f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 101099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // TODO setEscapeProcessing() is not supported 1011adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testSetEscapeProcessing() { 1012adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 1013adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1014adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String select = "select * from zoo"; 1015adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 1016adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.setEscapeProcessing(true); 1017adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Fail: statement does not fail"); 1018adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1019adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not supported", e.getMessage()); 1020adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1021adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1022f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 102399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testSetQueryTimeout() throws SQLException { 102499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Statement st = conn.createStatement(); 102599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.setQueryTimeout(2); 102699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(2, st.getQueryTimeout()); 1027f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 102899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson try { 102999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = conn.createStatement(); 103099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.setQueryTimeout(-1); 103199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("SQLException not thrown"); 103299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } catch (SQLException expected) { 103399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // expected 103499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 10351cf1411402fb99d789f9c8396d8decf347a660dfJeremy Sharpe 103699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson try { 103799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = conn.createStatement(); 103899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.close(); 103999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.setQueryTimeout(3); 104099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("SQLException not thrown"); 104199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } catch (SQLException expected) { 104299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // expected 1043adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1044adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1045f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 104699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // not fully supported 1047adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetResultSetType() { 1048adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 1049f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes // test default value 1050adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1051adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 1052adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSetType(); 1053adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.TYPE_SCROLL_INSENSITIVE, st 1054adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getResultSetType()); 1055adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1056adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not supported", e.getMessage()); 1057adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1058adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1059adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // failing tests 1060adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1061adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 1062adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet.CONCUR_UPDATABLE); 1063adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSetType(); 1064adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.TYPE_SCROLL_SENSITIVE, st.getResultSetType()); 1065adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1066adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not supported", e.getMessage()); 1067adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1068adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1069adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1070adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 1071adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet.CONCUR_UPDATABLE); 1072adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSetType(); 1073adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.TYPE_SCROLL_SENSITIVE, st.getResultSetType()); 1074adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1075adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not supported", e.getMessage()); 1076adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1077adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1078adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1079adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, 1080adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet.CONCUR_UPDATABLE); 1081adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSetType(); 1082adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.TYPE_FORWARD_ONLY, st.getResultSetType()); 1083adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1084adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not supported", e.getMessage()); 1085adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1086adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1087f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 108899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // Test for default value fails 1089adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetResultSetHoldability() { 1090f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1091f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes // test default value 1092adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 1093adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1094adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 1095adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.CLOSE_CURSORS_AT_COMMIT, st 1096adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getResultSetHoldability()); 1097adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1098adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not supported", e.getMessage()); 1099adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // failing tests 1102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 110399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 1104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet.CONCUR_READ_ONLY, 1105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet.HOLD_CURSORS_OVER_COMMIT); 1106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected: not supported"); 1107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // ok: not supported 1109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 111299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, 1113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet.CONCUR_READ_ONLY, 1114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet.CLOSE_CURSORS_AT_COMMIT); 1115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected: not supported"); 1116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /* 1117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSetHoldability(); 1118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.CLOSE_CURSORS_AT_COMMIT, st 1119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getResultSetHoldability()); 1120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 112199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } catch (SQLException expected) { 1122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1124f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 112599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // Not supported 1126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void testGetResultSetConcurrency() { 1127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 1128f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1129f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes // test default value 1130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 1132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSetConcurrency(); 1133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.CONCUR_READ_ONLY, st 1134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .getResultSetConcurrency()); 1135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("not supported", e.getMessage()); 1137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1138f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // failing tests 1140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 1143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet.CONCUR_UPDATABLE); 1144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSetConcurrency(); 1145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.CONCUR_UPDATABLE, st.getResultSetConcurrency()); 1146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected: not supported"); 1147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 1149f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1151f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, 1154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet.CONCUR_READ_ONLY); 1155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSetConcurrency(); 1156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals(ResultSet.CONCUR_READ_ONLY, st.getResultSetConcurrency()); 1157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected: not supported"); 1158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok; 1160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1162f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 116399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // Does not return null on update count > 0 (not a select statement) 116499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testGetResultSet() throws SQLException { 1165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 1166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet res = null; 1167f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 116899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, 116999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson ResultSet.CONCUR_READ_ONLY, 117099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson ResultSet.CLOSE_CURSORS_AT_COMMIT); 117199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.execute("create table test (c1);"); 117299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson res = st.getResultSet(); 117399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertNull(res); 117499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson 117599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = conn.createStatement(); 117699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String select = "select * from zoo where id == 4;"; 117799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson String insert = "insert into zoo (id, name, family) values (4, 'Vorobuy', 'bear');"; 117899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.execute(insert); 117999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.execute(select); 118099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(-1, st.getUpdateCount()); 118199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson res = st.getResultSet(); 118299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertNotNull(res); 118399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson res.next(); 118499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(4,res.getInt(1)); 118599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals("Vorobuy",res.getString(2)); 118699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals("bear",res.getString(3)); 1187f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes// assertEquals(0, st.getUpdateCount()); not supported 118899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertFalse(res.next()); 118999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson 119099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = conn.createStatement(); 119199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson insert = "insert into zoo (id, name, family) values (3, 'Vorobey', 'sparrow');"; 119299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.execute(insert); 119399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson res = st.getResultSet(); 119499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // statement is an update and should return null according to spec. 119599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson if (st.getUpdateCount() > 0) { 119699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertNull(res); 1197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1198f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 1201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSet(); 1202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 1203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 1205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1207f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 120899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // An other value is returned than was set (X * 1000) 120999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testGetQueryTimeout() throws SQLException { 1210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 121199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = conn.createStatement(); 121299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st.setQueryTimeout(2000); 121399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(2000, st.getQueryTimeout()); 1214f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 121599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = conn.createStatement(); 121699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertEquals(0,st.getQueryTimeout()); 1217f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 1220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getQueryTimeout(); 1221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 1222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 1224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1226f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 122799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // not supported 122899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testGetMoreResults() throws SQLException { 1229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 1230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet res1 = null; 1231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ResultSet res2 = null; 1232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String[] queries = { 1233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "insert into zoo values (3,'John','bird');", 1234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='cat' where id=3;", 1235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "update zoo set name='Masha', family='bear' where id=3;"}; 1236f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st = conn.createStatement(); 1239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.execute(queries[0]); 1240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse(st.getMoreResults()); 1241f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getResultSet(); 1244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 1245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 1247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } finally { 1249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 1251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException ee) { 1252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1254f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.getMoreResults(); 1257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 1258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 1260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1262f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 126399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // Bug in implementation of cancel: Does not fulfill spec. 126499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void testCancel() throws SQLException { 1265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement st = null; 126699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson st = conn.prepareStatement("insert into zoo values (7,'Speedy Gonzales','Mouse');"); 1267f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 126899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson CancelThread c = new CancelThread(st); 126999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson InsertThread ins = new InsertThread((PreparedStatement)st); 1270f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 127199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson try { 127299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson ins.t.join(); 127399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson c.t.join(); 127499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } catch (InterruptedException e) { 127599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("Error in test setup: "); 127699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } catch (Exception e){ 127799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // Insert thread may throw an exception 127899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // that it could not complete statement 1279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1280f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 128199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson // both threads have terminated and cancel should have cancelled the insert statement. 128299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson ResultSet res = st.executeQuery("select * from zoo where id=7"); 128399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson assertFalse(res.next()); 128499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson 1285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 1286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.close(); 1287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project st.cancel(); 1288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception expected"); 1289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (SQLException e) { 1290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //ok 1291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1293f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class CancelThread implements Runnable{ 1295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Thread t; 1296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Statement stmt; 1297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project CancelThread (Statement aSt) { 1298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.stmt = aSt; 1299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t = new Thread(this,"Cancel thread"); 1300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t.start(); 1301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 130299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson 1303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void run() { 130499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Logger.global.info("*Cancel* thread started"); 130599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson try { 130699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Thread.sleep(1500); 130799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } catch (InterruptedException e1) { 130899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("Error in test setup"); 130999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson e1.printStackTrace(); 131099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 131199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson try { 131299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Logger.global.info("*Cancel* thread, about to do stmt.cancel()"); 131399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson stmt.cancel(); 131499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Logger.global.info("*Cancel* thread, stmt.cancel() done"); 131599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } catch (SQLException e) { 131699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("Error in test setup"); 131799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson e.printStackTrace(); 131899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 131999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Logger.global.info("*Cancel* thread terminated"); 132099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 132199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 1322f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 1323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class InsertThread implements Runnable{ 1324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Thread t; 1325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project PreparedStatement stmt; 1326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project InsertThread (PreparedStatement aSt) { 1327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project this.stmt = aSt; 1328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t = new Thread(this,"Insert thread"); 1329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project t.start(); 1330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 1331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 133299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson public void run() { 133399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Logger.global.info("*Insert* thread started"); 133499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson try { 133599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Thread.sleep(1500); 133699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } catch (InterruptedException e1) { 133799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("Error in test setup"); 133899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson e1.printStackTrace(); 133999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 134099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson try { 134199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Logger.global.info("*Insert* thread, about to do insertion"); 134299aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson stmt.execute(); 134399aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson stmt.execute(); 134499aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Logger.global.info("*Insert* thread inserted"); 134599aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } catch (SQLException e) { 134699aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson fail("Error in test setup"); 134799aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson e.printStackTrace(); 134899aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 134999aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson Logger.global.info("*Insert* thread terminated"); 135099aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 135199aa85175f733e896d6cc01e968933a02e997bc2Jesse Wilson } 1352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 1353