KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > test > cases > TestHibernateClob


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.test.cases;
6
7 import java.io.Reader JavaDoc;
8 import java.io.StringReader JavaDoc;
9 import java.sql.Clob JavaDoc;
10 import java.sql.Connection JavaDoc;
11 import java.sql.DatabaseMetaData JavaDoc;
12 import java.sql.DriverManager JavaDoc;
13 import java.sql.PreparedStatement JavaDoc;
14 import java.sql.ResultSet JavaDoc;
15 import java.sql.Statement JavaDoc;
16
17 public class TestHibernateClob {
18
19     public static void main(String JavaDoc[] a) throws Exception JavaDoc {
20         System.out.println("starting test...");
21         org.h2.tools.DeleteDbFiles.execute(null, "test", true);
22         Class.forName("org.h2.Driver");
23         Connection JavaDoc conn = DriverManager.getConnection("jdbc:h2:mem:", "sa", "sa");
24         conn.createStatement().execute("CREATE TABLE IF NOT EXISTS TEST(ID INT)");
25         DatabaseMetaData JavaDoc meta = conn.getMetaData();
26         ResultSet JavaDoc rs = meta.getTables(null, null, "TEST", null);
27         while(rs.next()) {
28             String JavaDoc cat = rs.getString("TABLE_CAT");
29             String JavaDoc schema = rs.getString("TABLE_SCHEM");
30             String JavaDoc table = rs.getString("TABLE_NAME");
31             ResultSet JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc prep0 =
68         conn.prepareStatement("select max(ID) from CLOB_ENTITY");
69         ResultSet JavaDoc 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 JavaDoc prep1 =
78         conn.prepareStatement("insert into CLOB_ENTITY (SER_DATA, CLOB_DATA, ID) values (?, ?, ?)");
79         prep1.setNull(1, 2005);
80         StringBuffer JavaDoc buff = new StringBuffer JavaDoc(20000);
81         for(int i=0; i<10000; i++) {
82             buff.append((char)('0' + (i%10)));
83         }
84         Reader JavaDoc x = new StringReader JavaDoc(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 JavaDoc 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 JavaDoc rs1 =
102         prep2.executeQuery();
103         rs1.next();
104         System.out.println("ser: " + rs1.getCharacterStream("SER2_0_0_"));
105         Clob JavaDoc 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 JavaDoc 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 JavaDoc("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