PDA

View Full Version : [Java] Metadati delle tabelle di un DB


roby1483
15-10-2006, 13:18
Salve a tutti, ho fatto un programmino che sincronizza delle tabelle da un DB ad un altro e legge le tabelle da sincronizzare in un file XML. Adesso quando aggiungo una tabella al file XML devo creare manualmente la tabella nel DB destinazione e vorrei automatizzare la cosa. Con il ResultSetMetaData riesco a recuperare i tipi dalla tabella sorgente così da poter eseguire la create da programma però non riesco a sapere di quanti caratteri sono i campi testo. C'è un modo per ottenere questa informazione?

Grazie a tutti ;)

shinya
15-10-2006, 20:18
Probabilmente devi andare sulle tabelle di catalogo (information schema, data dictionary o come si chiama nel db che usi) del DB.
Che db usi? Se usi oracle forse posso aiutarti...

roby1483
15-10-2006, 20:48
Le tabelle le prendo da 4th Dimension e sinceramente non ne ho idea di quali siano le tabelle di sistema.
Cmq il tuo aiuto è stato prezioso, vedo di documentarmi un pò ma se sai qualcosa scrivi pure :D.

Grazie mille.

roby1483
16-10-2006, 14:04
Non ho trovato niente sulle tabelle di sistema di 4D, qualcuno può aiutarmi?

Angus
16-10-2006, 14:55
Non ho trovato niente sulle tabelle di sistema di 4D, qualcuno può aiutarmi?

DatabaseMetaData.getColumns(...) (http://java.sun.com/j2se/1.5.0/docs/api/java/sql/DatabaseMetaData.html#getColumns(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String))

roby1483
17-10-2006, 09:29
DatabaseMetaData.getColumns(...) (http://java.sun.com/j2se/1.5.0/docs/api/java/sql/DatabaseMetaData.html#getColumns(java.lang.String,%20java.lang.String,%20java.lang.String,%20java.lang.String))
Grazie mille.
La colonna che mi dice la lunghezza dei campi dovrebbe essere la 7 ovvero COLUMN_SIZE giusto? Lo chiedo perchè mi restituisce sempre -1 su tutti i tipi di dato. E' possibile che nel driver JDBC per 4D non sia stata implementata la logica necessaria e che restituisca sempre -1?

Angus
17-10-2006, 15:52
Grazie mille.
La colonna che mi dice la lunghezza dei campi dovrebbe essere la 7 ovvero COLUMN_SIZE giusto? Lo chiedo perchè mi restituisce sempre -1 su tutti i tipi di dato. E' possibile che nel driver JDBC per 4D non sia stata implementata la logica necessaria e che restituisca sempre -1?

Purtroppo credo che sia possibile. Qui (http://www.4d.com/corporate/press_releases/pr031604_4d_jdbc.html) si afferma che assieme al driver compilato dovresti avere a disposizione i codici sorgenti: cerca lì la risposta.