📄 lobtest.java
字号:
Statement stmt3 = con.createStatement(); ResultSet rs2 = stmt3.executeQuery("SELECT data FROM #clobset6"); assertTrue(rs2.next()); // Test ResultSet.getString() assertTrue(data.equals(rs2.getString(1))); assertFalse(rs2.next()); stmt3.close(); rs2.close(); } public void testClobSet7() throws Exception { String data = getClobTestData(); Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #clobset7 (data TEXT)"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #clobset7 (data) VALUES (?)"); // Test PreparedStatement.setObject(int,String,int) pstmt.setObject(1, data, Types.LONGVARCHAR); assertEquals(pstmt.executeUpdate(), 1); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data FROM #clobset7"); assertTrue(rs.next()); // Test ResultSet.getString() assertTrue(data.equals(rs.getString(1))); assertFalse(rs.next()); stmt2.close(); rs.close(); } public void testClobSet8() throws Exception { String data = getClobTestData(); Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #clobset8 (data TEXT)"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #clobset8 (data) VALUES (?)"); // Test PreparedStatement.setString() pstmt.setString(1, data); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data FROM #clobset8"); assertTrue(rs.next()); Clob clob = rs.getClob(1); data = getNewClobTestData(); // Test Clob.setBytes() clob.setString(1, data); assertTrue(data.equals(clob.getSubString(1L, (int) clob.length()))); assertFalse(rs.next()); PreparedStatement pstmt2 = con.prepareStatement("UPDATE #clobset8 SET data = ?"); // Test PreparedStatement.setObject(int,Clob,int) pstmt2.setObject(1, clob, Types.CLOB); assertEquals(1, pstmt2.executeUpdate()); pstmt2.close(); stmt2.close(); rs.close(); Statement stmt3 = con.createStatement(); ResultSet rs2 = stmt3.executeQuery("SELECT data FROM #clobset8"); assertTrue(rs2.next()); // Test ResultSet.getString() assertTrue(data.equals(rs2.getString(1))); assertFalse(rs2.next()); stmt3.close(); rs2.close(); } public void testClobUpdate1() throws Exception { String data = getClobTestData(); Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #clobupdate1 (id NUMERIC IDENTITY, data TEXT, " + "CONSTRAINT pk_clobupdate1 PRIMARY KEY CLUSTERED (id))"); stmt.close(); stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery("SELECT id, data FROM #clobupdate1"); rs.moveToInsertRow(); // Test ResultSet.updateString() rs.updateString(2, data); rs.insertRow(); stmt.close(); rs.close(); Statement stmt2 = con.createStatement(); ResultSet rs2 = stmt2.executeQuery("SELECT data FROM #clobupdate1"); assertTrue(rs2.next()); // Test ResultSet.getString() assertTrue(data.equals(rs2.getString(1))); assertFalse(rs2.next()); stmt2.close(); rs2.close(); } public void testClobUpdate2() throws Exception { String data = getClobTestData(); Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #clobupdate2 (id NUMERIC IDENTITY, data TEXT, " + "CONSTRAINT pk_clobupdate2 PRIMARY KEY CLUSTERED (id))"); stmt.close(); stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery("SELECT id, data FROM #clobupdate2"); rs.moveToInsertRow(); // Test ResultSet.updateAsciiStream() rs.updateAsciiStream(2, new ByteArrayInputStream(data.getBytes("ASCII")), data.length()); rs.insertRow(); stmt.close(); rs.close(); Statement stmt2 = con.createStatement(); ResultSet rs2 = stmt2.executeQuery("SELECT data FROM #clobupdate2"); assertTrue(rs2.next()); // Test ResultSet.getString() assertTrue(data.equals(rs2.getString(1))); assertFalse(rs2.next()); stmt2.close(); rs2.close(); } public void testClobUpdate3() throws Exception { String data = getClobTestData(); Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #clobupdate3 (id NUMERIC IDENTITY, data TEXT, " + "CONSTRAINT pk_clobupdate3 PRIMARY KEY CLUSTERED (id))"); stmt.close(); stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executeQuery("SELECT id, data FROM #clobupdate3"); rs.moveToInsertRow(); // Test ResultSet.updateCharacterStream() rs.updateCharacterStream(2, new StringReader(data), data.length()); rs.insertRow(); stmt.close(); rs.close(); Statement stmt2 = con.createStatement(); ResultSet rs2 = stmt2.executeQuery("SELECT data FROM #clobupdate3"); assertTrue(rs2.next()); // Test ResultSet.getString() assertTrue(data.equals(rs2.getString(1))); assertFalse(rs2.next()); stmt2.close(); rs2.close(); } public void testClobUpdate4() throws Exception { String data = getClobTestData(); Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #clobupdate4 (id NUMERIC IDENTITY, data TEXT, " + "CONSTRAINT pk_clobupdate4 PRIMARY KEY CLUSTERED (id))"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #clobupdate4 (data) VALUES (?)"); // Test PreparedStatement.setString() pstmt.setString(1, data); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data FROM #clobupdate4"); assertTrue(rs.next()); Clob clob = rs.getClob(1); data = getNewClobTestData(); // Test Clob.setBytes() clob.setString(1, data); assertTrue(data.equals(clob.getSubString(1, (int) clob.length()))); assertFalse(rs.next()); Statement stmt3 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs2 = stmt3.executeQuery("SELECT id, data FROM #clobupdate4"); assertTrue(rs2.next()); // Test ResultSet.updateClob() rs2.updateClob(2, clob); rs2.updateRow(); assertFalse(rs2.next()); stmt2.close(); rs.close(); stmt3.close(); rs2.close(); Statement stmt4 = con.createStatement(); ResultSet rs3 = stmt4.executeQuery("SELECT data FROM #clobupdate4"); assertTrue(rs3.next()); // Test ResultSet.getString() assertTrue(data.equals(rs3.getString(1))); assertFalse(rs3.next()); stmt4.close(); rs3.close(); } public void testClobUpdate5() throws Exception { String data = getClobTestData(); Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #clobupdate5 (id NUMERIC IDENTITY, data TEXT, " + "CONSTRAINT pk_clobupdate5 PRIMARY KEY CLUSTERED (id))"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #clobupdate5 (data) VALUES (?)"); // Test PreparedStatement.setString() pstmt.setString(1, data); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data FROM #clobupdate5"); assertTrue(rs.next()); Clob clob = rs.getClob(1); data = getNewClobTestData(); // Test Clob.setBytes() clob.setString(1, data); assertTrue(data.equals(clob.getSubString(1, (int) clob.length()))); assertFalse(rs.next()); Statement stmt3 = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs2 = stmt3.executeQuery("SELECT id, data FROM #clobupdate5"); assertTrue(rs2.next()); // Test ResultSet.updateClob() rs2.updateClob(2, clob); rs2.updateRow(); assertFalse(rs2.next()); stmt2.close(); rs.close(); stmt3.close(); rs2.close(); Statement stmt4 = con.createStatement(); ResultSet rs3 = stmt4.executeQuery("SELECT data FROM #clobupdate5"); assertTrue(rs3.next()); // Test ResultSet.getString() assertTrue(data.equals(rs3.getString(1))); assertFalse(rs3.next()); stmt4.close(); rs3.close(); } /** * Test long <code>Clob</code> manipulation including indexed writes. */ public void testClobUpdate6() throws Exception { int size = 100000; StringBuffer data = new StringBuffer(size); for (int i = 0; i < size; i++) { data.append((char)('A'+i%10)); } // // Construct a clob // Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT ''"); assertNotNull(rs); assertTrue(rs.next()); Clob clob = rs.getClob(1); clob.setString(1, data.toString()); assertEquals((long)size, clob.length()); assertTrue(data.toString().equals(clob.getSubString(1, (int)clob.length()))); clob.setString(10, "THIS IS A TEST"); data.replace(9, 23, "THIS IS A TEST"); assertEquals("THIS IS A TEST", clob.getSubString(10, 14)); assertTrue(compare(data.toString(), clob.getSubString(1, (int)clob.length()))); clob.truncate(23); assertEquals("ABCDEFGHITHIS IS A TEST", clob.getSubString(1, 23)); OutputStream os = clob.setAsciiStream(1); for (int i = 0; i < size; i++) { os.write(data.charAt(i)); } os.close(); assertEquals((long)size, clob.length()); assertTrue(data.toString().equals(clob.getSubString(1, (int)clob.length()))); InputStream is = clob.getAsciiStream(); int b; int p = 0; while ((b = is.read()) >= 0) { if ((char)b != data.charAt(p++)) { fail("Mismatch at " + p); } } is.close(); assertTrue(p == size); Reader rdr = clob.getCharacterStream(); p = 0; while ((b = rdr.read()) >= 0) { if ((char)b != data.charAt(p++)) { fail("Mismatch at " + p); } } rdr.close(); assertTrue(p == size); clob.truncate(0); Writer wtr = clob.setCharacterStream(1); for (int i = 0; i < size; i++) { wtr.write(data.charAt(i)); } wtr.close(); assertTrue(p == size); assertTrue(data.toString().equals(clob.getSubString(1, (int)clob.length()))); wtr = clob.setCharacterStream(10000); for (int i = 0; i < 8; i++) { wtr.write('X'); } wtr.close(); data.replace(10000-1, 10000-1+8, "XXXXXXXX"); assertTrue(data.toString().equals(clob.getSubString(1, (int)clob.length()))); clob.setString(100001, "XTESTX", 1, 4); assertEquals((long)100000+4, clob.length()); assertEquals("JTEST", clob.getSubString(100000, 8)); assertEquals(100000, clob.position("JTEST", 100000)); Clob clob2 = rs.getClob(1); clob.setString(1, "XXXXXXXX"); assertEquals(10000, clob.position("XXXXXXXX", 10000)); assertFalse(10000 == clob.position("XXXXXXXX", 10001)); } public void testClobSetNull1() throws Exception { Statement stmt = con.createStatement(); stmt.execute("CREATE TABLE #clobsetnull1 (data TEXT NULL)"); stmt.close(); PreparedStatement pstmt = con.prepareStatement("INSERT INTO #clobsetnull1 (data) VALUES (?)"); // Test PreparedStatement.setAsciiStream() pstmt.setAsciiStream(1, null, 0); assertEquals(1, pstmt.executeUpdate()); pstmt.close(); Statement stmt2 = con.createStatement(); ResultSet rs = stmt2.executeQuery("SELECT data FROM #clobsetnull1"); assertTrue(rs.next()); // Test ResultSet.getAsciiStream() assertNull(rs.getAsciiStream(1)); assertTrue(rs.wasNull()); // Test ResultSet.getCharacterStream() assertNull(rs.getCharacterStream(1)); assertTrue(rs.wasNull()); // Test ResultSet.getClob() assertNull(rs.get
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -