1 5 package org.h2.test.cases; 6 7 import java.io.Reader ; 8 import java.io.StringReader ; 9 import java.sql.Clob ; 10 import java.sql.Connection ; 11 import java.sql.DatabaseMetaData ; 12 import java.sql.DriverManager ; 13 import java.sql.PreparedStatement ; 14 import java.sql.ResultSet ; 15 import java.sql.Statement ; 16 17 public class TestHibernateClob { 18 19 public static void main(String [] a) throws Exception { 20 System.out.println("starting test..."); 21 org.h2.tools.DeleteDbFiles.execute(null, "test", true); 22 Class.forName("org.h2.Driver"); 23 Connection conn = DriverManager.getConnection("jdbc:h2:mem:", "sa", "sa"); 24 conn.createStatement().execute("CREATE TABLE IF NOT EXISTS TEST(ID INT)"); 25 DatabaseMetaData meta = conn.getMetaData(); 26 ResultSet rs = meta.getTables(null, null, "TEST", null); 27 while(rs.next()) { 28 String cat = rs.getString("TABLE_CAT"); 29 String schema = rs.getString("TABLE_SCHEM"); 30 String table = rs.getString("TABLE_NAME"); 31 ResultSet rs2 = meta.getColumns(cat, schema, table, null); 32 while(rs2.next()) { 33 System.out.println(table + "." + rs2.getString("COLUMN_NAME")); 34 } 35 } 36 37 conn.getAutoCommit(); 38 conn.setAutoCommit(false); 39 DatabaseMetaData dbMeta0 = 40 conn.getMetaData(); 41 dbMeta0.getDatabaseProductName(); 42 dbMeta0.getDatabaseMajorVersion(); 43 dbMeta0.getDatabaseProductVersion(); 44 dbMeta0.getDriverName(); 45 dbMeta0.getDriverVersion(); 46 dbMeta0.supportsResultSetType(1004); 47 dbMeta0.supportsBatchUpdates(); 48 dbMeta0.dataDefinitionCausesTransactionCommit(); 49 dbMeta0.dataDefinitionIgnoredInTransactions(); 50 dbMeta0.supportsGetGeneratedKeys(); 51 conn.getAutoCommit(); 52 conn.getAutoCommit(); 53 conn.commit(); 54 conn.setAutoCommit(true); 55 Statement stat0 = 56 conn.createStatement(); 57 stat0.executeUpdate("drop table CLOB_ENTITY if exists"); 58 stat0.getWarnings(); 59 stat0.executeUpdate("create table CLOB_ENTITY (ID bigint not null, SER_DATA clob, CLOB_DATA clob, primary key (ID))"); 60 stat0.getWarnings(); 61 stat0.close(); 62 conn.getWarnings(); 63 conn.clearWarnings(); 64 conn.setAutoCommit(false); 65 conn.getAutoCommit(); 66 conn.getAutoCommit(); 67 PreparedStatement prep0 = 68 conn.prepareStatement("select max(ID) from CLOB_ENTITY"); 69 ResultSet rs0 = 70 prep0.executeQuery(); 71 rs0.next(); 72 rs0.getLong(1); 73 rs0.wasNull(); 74 rs0.close(); 75 prep0.close(); 76 conn.getAutoCommit(); 77 PreparedStatement prep1 = 78 conn.prepareStatement("insert into CLOB_ENTITY (SER_DATA, CLOB_DATA, ID) values (?, ?, ?)"); 79 prep1.setNull(1, 2005); 80 StringBuffer buff = new StringBuffer (20000); 81 for(int i=0; i<10000; i++) { 82 buff.append((char)('0' + (i%10))); 83 } 84 Reader x = new StringReader (buff.toString()); 85 prep1.setCharacterStream(2, x, 10000); 86 prep1.setLong(3, 1); 87 prep1.addBatch(); 88 prep1.executeBatch(); 89 prep1.close(); 90 conn.getAutoCommit(); 91 conn.getAutoCommit(); 92 conn.commit(); 93 conn.isClosed(); 94 conn.getWarnings(); 95 conn.clearWarnings(); 96 conn.getAutoCommit(); 97 conn.getAutoCommit(); 98 PreparedStatement prep2 = 99 conn.prepareStatement("select clobholdin0_.ID as ID0_0_, clobholdin0_.SER_DATA as SER2_0_0_, clobholdin0_.CLOB_DATA as CLOB3_0_0_ from CLOB_ENTITY clobholdin0_ where clobholdin0_.ID=?"); 100 prep2.setLong(1, 1); 101 ResultSet rs1 = 102 prep2.executeQuery(); 103 rs1.next(); 104 System.out.println("ser: " + rs1.getCharacterStream("SER2_0_0_")); 105 Clob clob0 = 106 rs1.getClob("CLOB3_0_0_"); 107 System.out.println("wasNull: " + rs1.wasNull()); 108 rs1.next(); 109 rs1.close(); 110 prep2.getMaxRows(); 111 prep2.getQueryTimeout(); 112 prep2.close(); 113 conn.getAutoCommit(); 114 Reader r = clob0.getCharacterStream(); 115 char[] chars = new char[(int)clob0.length()]; 116 int read = r.read(chars); 117 System.out.println("read: " + read + " " + r); 118 for(int i=0; i<10000; i++) { 119 int ch = chars[i]; 120 if(ch != ('0' + (i%10))) { 121 throw new Error ("expected "+ (char)('0' + (i%10)) + " got: " + ch + " (" + (char)ch + ")"); 122 } 123 } 124 int ch = r.read(); 125 if(ch != -1) { 126 System.out.println("expected -1 got: " + ch ); 127 } 128 conn.close(); 129 System.out.println("done"); 130 } 131 132 } 133 | Popular Tags |