U kunt nu tal van taken uit te voeren door middel van Java Database Connectivity ( JDBC ) Application Programming Interface ( API ) uit database CLOB kolommen . CLOB , wat staat voor " Karakter groot object , " is een data- instrument dat wordt gebruikt voor het opslaan en ophalen van grote hoeveelheden tekst gegevens in karakter -formaat . Een CLOB kan opslaan tot 128 terabytes tekengegevens in de database. Zijn volledige compatibiliteit met Java maakt het een voorkeur door veel software-ontwikkelaars . Instructies 1 Gebruik de volgende code fragment naar een CLOB object , waarbij " rs " is een ResultSet object maken : Clob clob = rs.getClob ( 1 ) ; de variabele " clob " is nu een functionele operator op de CLOB waarde in de eerste kolom van de navolgende resultaat " rs . " Ingang 2 van de volgende code om uw database aan twee lopen identieke CLOB waarden in een nieuwe tabel , die in staat zijn met 500 kilobytes van overbodige tekst gegevens zijn : import java.sql * ; public class PutGetClobs { openbare . static void main ( String [ ] args ) op Twitter gooit SQLException { //Registreer de inheemse JDBC -driver . try { Class.forName ( " COM.ibm.db2.jdbc.app.DB2Driver " ) ; } catch ( Exception e ) { System.exit ( 1 ) ; //Setup . fout } //een verbinding tot stand en verklaring mee te werken Connection c = DriverManager.getConnection ( " jdbc : db2 : * local" ) . ; Verklaring s = c.createStatement ( ) ; //opruimen eventuele eerdere run van deze toepassing try { s.executeUpdate ( . " DROP tABLE CUJOSQL.CLOBTABLE " ) ; } catch ( SQLException e ) { //negeren - aannemen dat de tabel niet bestaat } . //Maak een tabel met een kolom CLOB . De standaard CLOB kolom //grootte is 1 MB s.executeUpdate ( " CREATE TABLE CUJOSQL.CLOBTABLE ( COL1 CLOB ) " ) ; . //Creëer een PreparedStatement object waarmee u //een nieuwe Clob object zetten in de database PreparedStatement ps = c.prepareStatement ( " INSERT INTO CUJOSQL.CLOBTABLE WAARDEN ( ) ? ' ) ; . < br > //Creëer een grote CLOB waarde ... StringBuffer buffer = new StringBuffer ( 500000 ) ; terwijl ( buffer.length ( ) < 500.000 ) { < br buffer.append > ( " Al het werk en geen spel maakt Cujo een saaie jongen . " ) ; } String clobValue = buffer.toString ( ) ; //de parameter PreparedStatement . Dit is niet //portable om alle JDBC drivers . JDBC-stuurprogramma hoeft niet //om setBytes voor CLOB kolommen steunen . Dit wordt gedaan om //toelaten om nieuwe CLOB's genereren . Ook //laat JDBC 1.0 -drivers een manier om te werken met kolommen met //Clob data ps.setString ( 1 , clobValue ) ; . //Verwerk de verklaring , het plaatsen van de clob in de database ps.executeUpdate ( ) op ; . //Proces een query en krijg de CLOB die was net uit gestoken van de //databank als Clob object ResultSet rs = s.executeQuery ( " SELECT * FROM CUJOSQL.CLOBTABLE " ) ; . rs.next ( ) op ; < br > clob clob = rs.getClob ( 1 ) ; //Zet dat clob terug in de database via //de PreparedStatement ps . . setClob ( 1 , clob ) ; ps.execute ( ) ; c.close ( ) op ; //verbinding sluiten sluit ook stmt en rs } < br . > } 3 Voeg de volgende code om uw database om het gedrag van uw CLOB objecten wijzigen : . import java.sql * ; public class UpdateClobs { public static void main ( String [ ] args ) op Twitter gooit SQLException { //Registreer het inheemse JDBC bestuurder try { Class.forName ( " COM.ibm.db2.jdbc.app.DB2Driver " ) ; } . catch ( Exception e ) { < br System.exit > ( 1 ) ; //Setup error } Connection c = DriverManager.getConnection ( " jdbc : db2 : * lokaal " ) ; . Verklaring s = c.createStatement ( ) ; ResultSet rs = s.executeQuery ( "SELECT * FROM CUJOSQL.CLOBTABLE " ) ; rs.next ( ) op ; Clob clob1 = rs.getClob ( 1 ) ; rs.next ( ) op ; Clob clob2 = rs.getClob ( 1 ) ; //Truncate a . CLOB clob1.truncate ( ( lang ) 150000 ) ; System.out.println ( " Clob1 's nieuwe lengte is " + clob1.length ( ) ) ; //bijwerken van een deel van de CLOB met een nieuwe tekenreekswaarde tekenreekswaarde = "Sommige nieuwe gegevens voor een keer " ; . int charsWritten = clob2.setString ( 500L , waarde ) ; < br System.out.println > ( "Tekens geschreven is " + charsWritten ) ; //De bytes is te vinden op positie 500 in clob2 lange startInClob2 = clob2.position ( waarde 1 ) ; System.out.println ( " patroon gevonden beginnend op positie " + startInClob2 ) ; c.close ( ) op ; //verbinding sluiten sluit ook stmt en rs } } 4 . Breng de volgende code om CLOB te voeren in uw database . CLOB sluit vanzelf na het uitvoeren van de onderstaande functies import java.sql * ; . . Public class UseClobs { public static void main ( String [ ] args ) op gooit SQLException { //Registreer de inheemse 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 : * lokaal " ) ; Verklaring s = c.createStatement ( ) op ; ResultSet rs = s . executeQuery ( " SELECT * FROM CUJOSQL.CLOBTABLE " ) ; rs.next ( ) ; Clob clob1 = rs.getClob ( 1 ) ; rs.next ( ) ; Clob clob2 = rs.getClob ( 1 ) ; //Bepaal de lengte van een LOB lange eind = clob1.length ( ) ; . < br System.out.println > ( " Clob1 lengte is " + clob1.length ( ) ) ; //bij het werken met de LOB , alle indexering die gerelateerd is aan hen //1 is gebaseerd , en niet 0 - gebaseerd , zoals strings en arrays lange startpunt = 450 ; . lange endingPoint = 50 ; //Haal een deel van de CLOB als een array van bytes String outString = clob1.getSubString ( startpunt , ( int ) endingPoint ) ; . System.out.println ( " Clob substring is " + outString ) ; < br > //zoeken waar een sub - CLOB of string first wordt gevonden binnen een //CLOB . De setup voor dit programma geplaatst twee identieke kopieën van Madame //a herhalen CLOB in de database . Zo kan de startpositie van de //string gewonnen uit clob1 te vinden in het uitgangspunt //positie in clob2 als het zoeken begint dicht bij de positie waar lange startInClob2 = clob2.position ( outString , 440 ) > //de string begint ; System.out.println ( " patroon gevonden beginnend op positie " + startInClob2 ) ; < br c.close > ( ) ; //verbinding sluiten sluit ook stmt en rs } } . |