Du kan nu slutföra många uppgifter genom Java Database Connectivity ( JDBC ) Application Programming Interface ( API ) med kolonner databas CLOB . CLOB , som står för " Character stort objekt , " är en data verktyg som används för lagring och hämtning av stora mängder textdata i teckenformat. En CLOB kan lagra upp till 128 terabyte karaktär data i databasen . Dess full kompatibilitet med Java gör det en föredras av många utvecklare . Instruktioner
1
Använd följande kod fragment för att skapa en CLOB objekt , där " rs " är ett ResultSet objekt :
CLOB clob = rs.getClob ( 1 ) ;
variabeln " CLOB " är nu en funktionell aktör på CLOB värde lagrat i den första kolumnen i resultatet som " rs . "
2
Mata in följande kod till din databas för att köra två identiska CLOB värden i en ny tabell , som kan innehålla 500 kilobyte av redundanta textdata :
import java.sql *;
public class PutGetClobs {
allmänheten. static void main ( String [] args ) katalog
kastar SQLException
{
//Registrera infödda JDBC drivrutinen .
try {
Class.forName ( " com.ibm.db2.jdbc.app.DB2Driver " ) ;
} catch ( Exception e ) {
System.exit ( 1 ) , //Setup . fel
}
//upprätta en anslutning och uttalande med att arbeta
Anslutning c = DriverManager.getConnection ( " jdbc : DB2 : * lokal " ) . ;
Uttalande s = c.createStatement ( ) ;
//städa upp någon föregående körningen av denna ansökan
try {
s.executeUpdate ( . " DROP tABLE CUJOSQL.CLOBTABLE " ) ;
} catch ( SQLException e ) {
//Ignorera det - anta tabellen inte existerade
}
.
//Skapa en tabell med en CLOB kolumn . Standardinställningen CLOB kolumn
//storlek är 1 MB
s.executeUpdate ( " CREATE TABLE CUJOSQL.CLOBTABLE ( COL1 CLOB ) " ) ; .
//Skapa ett PreparedStatement objekt som tillåter dig att sätta
//en ny CLOB objekt i databasen
PreparedStatement ps = c.prepareStatement ( " INSERT INTO CUJOSQL.CLOBTABLE VÄRDEN ( ) ? " ) ; .
//Skapa en stor CLOB värde ...
StringBuffer buffer = new StringBuffer ( 500000 ) ,
samtidigt ( buffer.length ( ) < 500000 ) {
buffer.append ( " Allt arbete och ingen lek gör Cujo en tråkig pojke . " ) ;
}
String clobValue = buffer.toString ( ) ;
//Ställ PreparedStatement parametern . Detta är inte
//bärbart till alla JDBC . JDBC har inte
//för att stödja setBytes för CLOB kolumner . Detta görs för att
//låter dig skapa nya CLOBs . Det också
//tillåter JDBC 1.0 chaufförer ett sätt att arbeta med kolumner innehållande
//CLOB uppgifter
ps.setString ( 1 , clobValue ) ; .
//Process uttalandet , sätta in CLOB i databasen
ps.executeUpdate ( ) , .
//Process en fråga och få CLOB som var just in ur
//databas som en CLOB objekt
ResultSet rs = s.executeQuery ( " SELECT * FROM CUJOSQL.CLOBTABLE " ) , .
rs.next ( ) ;
clob clob = rs.getClob ( 1 ) ;
//Put att CLOB tillbaka in i databasen via
//PreparedStatement
ps . . setClob ( 1 , CLOB ) ;
ps.execute ( ) ;
c.close ( ) , //Anslutning close stänger även stmt och rs
}
} Addera 3
Infoga följande kod till din databas för att ändra beteendet hos dina CLOB objekt : .
import java.sql * ;
public class UpdateClobs {
public void main ( String [] args ) katalog
kastar SQLException
{
//Registrera infödda JDBC föraren
try {
Class.forName ( " com.ibm.db2.jdbc.app.DB2Driver " ) ;
} . catch ( Exception e ) {
System.exit ( 1 ) , //Setup Error
}
Anslutning c = DriverManager.getConnection ( " jdbc : DB2 : * lokal " ) , .
< p> Uttalande s = c.createStatement ();
ResultSet rs = s.executeQuery ( " SELECT * FROM CUJOSQL.CLOBTABLE ");
rs.next ();
< p> CLOB clob1 = rs.getClob ( 1 ) ;
rs.next ();
CLOB clob2 = rs.getClob ( 1 ) ;
//Trunkera a . CLOB
clob1.truncate ( ( lång) 150000 ) ,
System.out.println ( " Clob1 nya längd är " + clob1.length ( ) ) ;
//uppdatera en del av CLOB med ett nytt String värde
String value = " Några nya uppgifter för en gång " , .
int charsWritten = clob2.setString ( 500L , värde ) ;
System.out.println ( " skrivtecknen är " + charsWritten ) ;
//The bytes kan hittas vid position 500 i clob2
lång startInClob2 = clob2.position ( värde 1 ) ,
System.out.println ( " mönster återfinns med början vid position " + startInClob2 ) ;
c.close ( ) , //Anslutning close stänger även stmt och rs .
}
}
4
Tillämpa följande kod att exekvera CLOB i din databas . CLOB kommer att stängas av sig själv efter att ha utfört sina uppgifter som anges nedan
import java.sql *; . .
Public class UseClobs {
public void main ( String [] args ) katalog
kastar SQLException
{
//Registrera infödda JDBC drivrutinen .
try {
Class.forName ( " com . ibm.db2.jdbc.app.DB2Driver " ) ;
} catch ( Exception e ) {
System.exit ( 1 ) , . //Setup Error
}
Anslutning c = DriverManager.getConnection ( " jdbc : db2 : * lokal ");
Uttalande 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 ) ;
//Bestäm längden på en LOB
långa änden = clob1.length ( ),.
System.out.println ( " Clob1 längd är " + clob1.length ( ) ) ;
//När du arbetar med LOB , all indexering som är relaterat till dem
//är 1 - baserad , och inte 0 - baserat som strängar och arrayer
lång startingpoint = 450 ; .
lång endingPoint = 50 ;
//Hämta del av CLOB som en byte array
String outString = clob1.getSubString ( startingpoint , ( int ) endingPoint ) .
System.out.println ( " CLOB delsträng är " + outString ) ;
//Hitta var en sub - CLOB eller sträng först finns inom en
//CLOB . Installationsprogrammet för det här programmet placeras två identiska kopior av
//en upprepande CLOB i databasen . Sålunda kan startpositionen för den
//string extraheras från clob1 hittas i utgångsmaterialet
//position i clob2 om sökningen börjar nära den position där
//strängen börjar
lång startInClob2 = clob2.position ( outString , 440 ) ; .
System.out.println ( " mönster återfinns med början vid position " + startInClob2 ) ;
c.close ( ) , //Anslutning close stänger även stmt och rs
}
}
.