Bonjour,
Je travaille sur une BDD objet relationnelle dans oracle 10g, qui contient des types complexes (types créés par l'utilisateur) .
Je doit recuperer avec java les attributs d'un type complexe (leurs noms et leurs types), alors pour chaque table je recupere les metadonnées de ses attributs;
puis je cherche si le type de l'attribut est simple ou complexe. si l'attribut est de type complexe, en ce moment là je doit recuperer le nom et le type de ses sous attributs, mais je ne trouve pas les bonnes methodes qui font ça???
merci de m'aider.
mon code est comme suit:

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
44
45
46
47
48
49
50
51
Class.forName (driver);
	    	Connection conn=null;
	             conn = DriverManager.getConnection(url, user, pswd);
			Statement state = conn.createStatement();
		    String[] TABLE_TYPES = {"TABLE"};
		    DatabaseMetaData resultSchema = conn.getMetaData();
		    ResultSet tables = resultSchema.getTables  (conn.getCatalog  () , schema, "%", TABLE_TYPES);
		    while (tables.next())
		    {
		    	  String t =tables.getString("TABLE_NAME");
		  		  ResultSet att = resultSchema.getColumns(conn.getCatalog(), schema, t, "%");//pour chercher les attributs de la table
		  		  //affichage des informations
		  		  ResultSetMetaData rsmd = att.getMetaData(); 
		  		  while(att.next()){
		  			  trouv=false;
		  			   for(int i=0; i<rsmd.getColumnCount(); i++){
		  				   String col = rsmd.getColumnName(i+1);
		  				   if(trouv==false)
		  				      {
						  		if (col.equals("DATA_TYPE"))//java.sql.types
						  			{
						  				trouv=true;
						  				if(att.getObject(i+1).toString().equals("1111"))    //si c'est un type complexe
						  					 {
						  						 typeSimple=false;
						  						 //System.out.println("c'est un type complexe"+  typeSimple);
						  					 }
						  					 else    //si c'est un type simple
						  					 {
						  						 typeSimple=true;
						  						//System.out.println("c'est un type simple"+  typeSimple);
						  					 }
 
						  				for(int j=0; j<rsmd.getColumnCount(); j++){
						  					String col2 = rsmd.getColumnName(j+1);
						  					if (col2.equals("COLUMN_NAME"))
								  			{
								  			 Object val = att.getObject(j+1);
								  			 //System.out.println(col2+" = "+val);
								  			 //System.out.println("******* typeSimple est à:    "+ typeSimple  );
 
											   if(typeSimple==true)
						  					   {
												   //faire mon traitement
								  			   }
								  				else //c.à.d c'est un type complexe
								  			    {
								  				    //recuperer les noms et les types des sous attributs de ce type complexe  
 
 
								  			     }