Bonjour,
J'ai un petit souci avec java/Oracle. En fait, dans une appli, j'attache un fichier Blob. J'utilise le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 public static void attacherFichierToGarantie(byte[] contenuFichier, String nomFichier, String idGarantie) throws SQLException, Exception{ String requeteForUpdate = ""; String requeteUpdate = ""; requeteForUpdate = "select g.DOCUMENT from APPLICATION.GARANTIE g where g.id = ? for update"; requeteUpdate = "update APPLICATION.GARANTIE g set g.NOMFICHIER = ?, g.DATE_INSERTION = ? where g.id = ?"; Connection conn = getConnectionTHIN(); conn.setAutoCommit(false); PreparedStatement stmtForUpdate = conn.prepareStatement(requeteForUpdate); PreparedStatement pstmtUpdate = conn.prepareStatement(requeteUpdate); BLOB blob = null; try{ //Parcourir le tableau des ids stmtForUpdate.setString(1, idGarantie); ResultSet rs = stmtForUpdate.executeQuery(); while(rs.next()){ blob = ((oracle.jdbc.OracleResultSet)rs).getBLOB(1); OutputStream os = blob.getBinaryOutputStream(); os.write(contenuFichier, 0, (int) contenuFichier.length); os.flush(); os.close(); } pstmtUpdate.setString(1, nomFichier); pstmtUpdate.setTimestamp(2, new Timestamp(Calendar.getInstance().getTimeInMillis())); pstmtUpdate.setString(3, idGarantie); rs = pstmtUpdate.executeQuery(); conn.commit(); } catch(Exception e){ System.out.println(e); } finally{ stmtForUpdate.close(); pstmtUpdate.close(); conn.close(); blob = null; } }
La methode getConnectionTHIN a été codée comme suit :
Ca marche très bien. Seulement, je ne souhaite pas passer par un fichier properties. J'aimerais utiliser une DataSource dans mon server.xml. J'ai essayé, mais ça marche pas. P'tre un problème de classe du driver. Moi j'ai utilisé ceci : java.sql.DriverManager (dans <parameter><name>driverClassName</name><value>java.sql.DriverManager </value></parameter>)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public static Connection getConnectionTHIN() throws Exception{ Connection connectionTHIN = null; try{ InputStream crm_admin_properties_file = SQLDataService.class.getClassLoader().getResourceAsStream("crm_admin_sql.properties"); Properties prop = new Properties(); prop.load( crm_admin_properties_file); String url = prop.getProperty("URL").trim(); String user = prop.getProperty("User").trim(); String password = prop.getProperty("Password").trim(); connectionTHIN = java.sql.DriverManager.getConnection(url, user, password); crm_admin_properties_file.close(); } catch( Exception e){ System.out.println(e); } return connectionTHIN; }
Quand je passe par la datasource, ça me sort ça comme erreur "
org.apache.commons.dbcp.DelegatingResultSet"
Any help please ?
Partager