mardi 27 octobre 2009

java : MAJ CLOB oracle

voici un petit exemple crad ... de code pour update un CLOB sous oracle


/**
*
*/
package com.valo.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Writer;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import oracle.jdbc.OracleConnection;
import oracle.jdbc.pool.OracleDataSource;
import oracle.sql.CLOB;

public class ClobUpdater {

private static final String DB_ID = "jdbc:oracle:thin:@unServeur:1234:MaBase";
private static final String DB_USER = "TOTO";
private static final String DB_USER_PWD = "TITI";
private static String file1 ="D:/Tmp/ToutManuel.txt" ;
private static int ID1 = 42004618;
private static String file2 ="D:/Tmp/ToutManuel2.txt" ;
private static int ID2 = 42004619;


/**
* @param args
*/
public static void main(String[] args) {
ClobUpdater updater = new ClobUpdater();
updater.updateFromFile(ID1, file1);
updater.updateFromFile(ID2, file2);
}

public void updateFromFile(int ID, String filenameURL){

File fichierALire = new File(filenameURL);
BufferedReader reader = null;
OracleDataSource ods;
OracleConnection c = null;

try {
ods = new OracleDataSource();
ods.setURL(DB_ID);
ods.setUser(DB_USER);
ods.setPassword(DB_USER_PWD);
c = (OracleConnection) ods.getConnection();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

try {
reader = new BufferedReader(new FileReader(fichierALire));
char [] buffer = new char[1024 * 8];
int lus = 0;
StringBuffer strBuffer = new StringBuffer();
String strLus = null;

while((lus = reader.read(buffer)) != -1)
{
strLus = new String(buffer,0,lus);
System.out.println("lus = " + strLus);
strBuffer.append(strLus);
}

// lecture termine
CLOB tmpCLOB = CLOB.createTemporary(c,true,CLOB.DURATION_SESSION);
Writer w1 = tmpCLOB.getCharacterOutputStream();
String chaineAEcrire = strBuffer.toString();
w1.write(chaineAEcrire);
w1.close();

String sqlUpdate = "UPDATE uneTable SET uneColonne = ? WHERE ID = ?";
PreparedStatement st = c.prepareStatement(sqlUpdate);
st.setClob(1,tmpCLOB);
st.setInt(2,ID);
int nbMaj = st.executeUpdate();
System.out.println("nb MAJ = " + nbMaj);
c.commit();
st.close();
c.close();

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
if(c!= null)
{
try {
c.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

}

Aucun commentaire:

Enregistrer un commentaire