Nu kunt u vele taken via Java Database Connectivity (JDBC) API Application Programming Interface () met behulp van databasekolommen CLOB uitvoeren. CLOB, wat staat voor "Character Large OBject", is een hulpmiddel van de gegevens gebruikt voor het opslaan en ophalen van grote hoeveelheden tekstgegevens in tekenopmaak. Een CLOB is geschikt voor het opslaan van maximaal 128 terabytes aan tekengegevens in de database. Haar volledige compatibiliteit met Java maakt het een voorkeur door vele softwareontwikkelaars.
Gebruik het volgende codefragment maken een CLOB-object, waar "rs" is een resultaatset-object:
CLOB clob = rs.getClob(1);
De variabele "clob" is nu een functionele operator op de CLOB waarde opgeslagen in de eerste kolom van de resultaatset "rs."
Voer de volgende code naar uw database uit te voeren van twee identieke CLOB waarden in een nieuwe tabel, die kan 500 kilobytes van redundante tekstgegevens bevatten:
importeren van java.sql.*;
openbare klasse PutGetClobs {}
openbare statische nietige leiding (koord [] args)
werpt SQLException
{
// Register the native JDBC driver. try { Class.forName("com.ibm.db2.jdbc.app.DB2Driver"); } catch (Exception e) { System.exit(1); // Setup error. } // Establish a Connection and Statement with which to work. Connection c = DriverManager.getConnection("jdbc:db2:*local"); Statement s = c.createStatement(); // Clean up any previous run of this application. try { s.executeUpdate("DROP TABLE CUJOSQL.CLOBTABLE"); } catch (SQLException e) { // Ignore it - assume the table did not exist. } // Create a table with a CLOB column. The default CLOB column // size is 1 MB. s.executeUpdate("CREATE TABLE CUJOSQL.CLOBTABLE (COL1 CLOB)"); // Create a PreparedStatement object that allow you to put // a new Clob object into the database. PreparedStatement ps = c.prepareStatement("INSERT INTO CUJOSQL.CLOBTABLE VALUES(?)"); // Create a big CLOB value... StringBuffer buffer = new StringBuffer(500000); while (buffer.length() < 500000) { buffer.append("All work and no play makes Cujo a dull boy."); } String clobValue = buffer.toString(); // Set the PreparedStatement parameter. This is not // portable to all JDBC drivers. JDBC drivers do not have // to support setBytes for CLOB columns. This is done to // allow you to generate new CLOBs. It also // allows JDBC 1.0 drivers a way to work with columns containing // Clob data. ps.setString(1, clobValue); // Process the statement, inserting the clob into the database. ps.executeUpdate(); // Process a query and get the CLOB that was just inserted out of the // database as a Clob object. ResultSet rs = s.executeQuery("SELECT * FROM CUJOSQL.CLOBTABLE"); rs.next(); Clob clob = rs.getClob(1); // Put that Clob back into the database through // the PreparedStatement. ps.setClob(1, clob); ps.execute(); c.close(); // Connection close also closes stmt and rs.
}
}
Voeg de volgende code aan uw database te veranderen van het gedrag van uw CLOB-objecten:
importeren van java.sql.*;
openbare klasse UpdateClobs {}
openbare statische nietige leiding (koord [] args)
werpt SQLException
{
// Register the native JDBC driver. try { Class.forName("com.ibm.db2.jdbc.app.DB2Driver"); } catch (Exception e) { System.exit(1); // Setup error. } Connection c = DriverManager.getConnection("jdbc:db2:*local"); Statement s = c.createStatement(); ResultSet rs = s.executeQuery("SELECT * FROM CUJOSQL.CLOBTABLE"); rs.next(); Clob clob1 = rs.getClob(1); rs.next(); Clob clob2 = rs.getClob(1); // Truncate a CLOB. clob1.truncate((long) 150000); System.out.println("Clob1's new length is " + clob1.length()); // Update a portion of the CLOB with a new String value. String value = "Some new data for once"; int charsWritten = clob2.setString(500L, value); System.out.println("Characters written is " + charsWritten); // The bytes can be found at position 500 in clob2 long startInClob2 = clob2.position(value, 1); System.out.println("pattern found starting at position " + startInClob2); c.close(); // Connection close also closes stmt and rs.
}
}
Toepassing van de volgende code voor het uitvoeren van CLOB in uw database. CLOB sluit vanzelf na het uitvoeren van de onderstaande functies.
importeren van java.sql.*;
openbare klasse UseClobs {}
openbare statische nietige leiding (koord [] args)
werpt SQLException
{
// Register the native JDBC driver. try { Class.forName("com.ibm.db2.jdbc.app.DB2Driver"); } catch (Exception e) { System.exit(1); // Setup error. } Connection c = DriverManager.getConnection("jdbc:db2:*local"); Statement s = c.createStatement(); ResultSet rs = s.executeQuery("SELECT * FROM CUJOSQL.CLOBTABLE"); rs.next(); Clob clob1 = rs.getClob(1); rs.next(); Clob clob2 = rs.getClob(1); // Determine the length of a LOB. long end = clob1.length(); System.out.println("Clob1 length is " + clob1.length()); // When working with LOBs, all indexing that is related to them // is 1-based, and not 0-based like strings and arrays. long startingPoint = 450; long endingPoint = 50; // Obtain part of the CLOB as a byte array. String outString = clob1.getSubString(startingPoint, (int)endingPoint); System.out.println("Clob substring is " + outString); // Find where a sub-CLOB or string is first found within a // CLOB. The setup for this program placed two identical copies of // a repeating CLOB into the database. Thus, the start position of the // string extracted from clob1 can be found in the starting // position in clob2 if the search begins close to the position where // the string starts. long startInClob2 = clob2.position(outString, 440); System.out.println("pattern found starting at position " + startInClob2); c.close(); // Connection close also closes stmt and rs.
}
}
- Gratis online tutorials zijn beschikbaar voor Java en CLOB. Leer zoveel als je kunt om vertrouwd te raken met deze efficiënte Web-technologieën.
- Toepassing code zodat wijzigingen aanbrengen op de CLOB objecten en het element CLOB pas uitgevoerd nadat u het programma "PutGetClobs" voltooid op uw database al uw gegevenstabellen om intact te houden.