Bonjour, je dispose d'une base de données Oracle 10 pour une application web développée en J2EE avec un weblogic 9.2.
La connexion à la base de données est éffectuée via un USER REMOTE donc non propriétaire de mon schéma ( contrainte de sécurité des dba ).
Mon problème est le suivant :
dans mon application, afin de faire des insert et update de façon générique sur n'importe quel type de champs, à la volée, je détermine le type de donnée du champs de ma table via la fonction getColumns() de la classe DatabaseMetaData. Le hic, c'est que la fonction me renvoi tout le temps un resultSet vide.
J'ai testé avec un utilisateur propriétaire du schéma cela fonctionne ( donc c'est pas que mon code foire ).
J'ai positionné mon user dans le schéma via un trigger comme le conseil la doc Oracle pour les user remote : je vois les tables et données quand je fais un select.
J'ai tenté d'ajouter le droit ANALYSE ANY à mon utilisateur : ça n'a rien changé, le resultset de la fonction getColumns() est toujours vide.
Avez vous des idées quand à ce qu'il faudrait ajouter / modifier comme droit d'utilisateur à mon user remote ?
le code de ma fonction (pour info)
Merci pour votre aide.
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 private int getSqlType(Connection connection, String schema, String tablename, String column) throws Throwable { DatabaseMetaData databasemetadata = connection.getMetaData(); ResultSet resultset = null; try { resultset = databasemetadata.getColumns(null, schema.toUpperCase(), tablename.toUpperCase(), column.toUpperCase()); if(resultset.next()) { int i = resultset.getInt(5); return i; } else { throw new SQLException("Colonne inexistante dans ls SGBD table=" + tablename + " col=" + column); } } finally { if(resultset != null) resultset.close(); } }
Pour info, j'ai posté le message dans cette catégorie car je pense que le problème vient vraiment de mes droits user.
Partager