|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 35
|
Java e DB2 - catalogo database
Vorrei realizzare un piccolo (?) programma java che mi visualizzi l'elenco di tutti i database gestiti da un DBMS specificato (nel mio caso DB2) con i nomi delle tabelle... ho visto che nel package java.sql ci sono alcune classi ed interfacce che potrebbero fare al caso mio (DatabaseMetaData ... ), ma onestamente non capisco come sia possibile utilizzarle nel mio caso. Il problema in pratica è solo ottenere l'elenco dei database... estrarre le informazioni relative alle tabelle di un database poi è piuttosto semplice.
help please
__________________
~~~~~~~~~~~~~~~~~~ "Cogito ergo rhum" |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2003
Città: Modena
Messaggi: 149
|
prova una cosa tipo questa
Codice:
public void readTables() throws SQLException {
DatabaseMetaData metadata = null;
Connection currentConnection = (tua connessione)
metadata = currentConnection.getMetaData();
String[] names = {"TABLE"};
ResultSet tableNames = metadata.getTables(null,"%", "%", names);
while (tableNames.next()) {
tableNames.getString("TABLE_NAME")
}
}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 808
|
Io so che in DB2 la tabella di catalogo che contiene le informazioni sulle tabelle utente e di sistema è la:
sysibm.systables Credo che dovrai aprirti una connessione Jdbc con il DB2 e fare una query su questa con l'opzione: where creator="il tuo qualificatore"
__________________
Se siete di Roma visitate questi siti: CAF, copisteria e soluzioni informatiche Se siete artigiani, hobbisti, artisti e collezionisti |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Feb 2000
Città: Roma (S.E.) Trattative_concluse: 300+
Messaggi: 15735
|
Quote:
che vuol di'? ma se non li so???? come faccio a sapere qual' e' la mia connessione? (non conosco il database)
__________________
I ricordi sono sempre tristi: quelli brutti perchè sono amari, quelli belli perché sono solo ricordi
Dal mio corpo in putrefazione cresceranno dei fiori, e io sarò dentro di loro. Questa è l'eternità. (E. Munch) Ultima modifica di Fede : 28-07-2004 alle 15:10. |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Feb 2000
Città: Roma (S.E.) Trattative_concluse: 300+
Messaggi: 15735
|
Quote:
Questa potrebbe essere una chicca.
__________________
I ricordi sono sempre tristi: quelli brutti perchè sono amari, quelli belli perché sono solo ricordi
Dal mio corpo in putrefazione cresceranno dei fiori, e io sarò dentro di loro. Questa è l'eternità. (E. Munch) |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 808
|
Quote:
Non mi parlare di DB2 è stato il mio pane quotidiano per anni, assieme al Cobol e al Cics. Sono già 3 o 4 anni ormai che lavoro su piattaforma Web / Java su Dbms Oracle/Db2/MySql , molto più divertente e ti da più soddisfazioni. L'università come va ? Stai lavorando ?
__________________
Se siete di Roma visitate questi siti: CAF, copisteria e soluzioni informatiche Se siete artigiani, hobbisti, artisti e collezionisti |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Feb 2000
Città: Roma (S.E.) Trattative_concluse: 300+
Messaggi: 15735
|
Quote:
non ti avevo riconosciuto... pensa un po' come sto cmq uni non male... lavoro ehmmm al momento no tu tutto ok? cmq grazie saluti [/OT]
__________________
I ricordi sono sempre tristi: quelli brutti perchè sono amari, quelli belli perché sono solo ricordi
Dal mio corpo in putrefazione cresceranno dei fiori, e io sarò dentro di loro. Questa è l'eternità. (E. Munch) |
|
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Feb 2000
Città: Roma (S.E.) Trattative_concluse: 300+
Messaggi: 15735
|
Quote:
__________________
I ricordi sono sempre tristi: quelli brutti perchè sono amari, quelli belli perché sono solo ricordi
Dal mio corpo in putrefazione cresceranno dei fiori, e io sarò dentro di loro. Questa è l'eternità. (E. Munch) |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 808
|
Quote:
Se non usi datasource o pool di connessioni, puoi provare così: Class.forName("COM.ibm.db2.jdbc.net.DB2Driver"); String url = "jdbc:db2://server_name:num_porta/nome_database"; Connection con = DriverManager.getConnection(url,"utente","password"); Statement stmt = con.createStatement(); Resultset rs = stmt.executeQuery("select * from sysibm.systables ...."); In Odbc dovrebbe essere così (non ne sono sicuro): Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:nome_database"; Connection con = DriverManager.getConnection(url); Il tutto va preso con le dovute preucazioni poichè ho recuperato questo codice da vecchi programmi. Adesso lavoro solo con i datasource (che oltretutto ti gestiscono automaticamente il pool di connessioni) e utilizzo l'approccio JNDI.
__________________
Se siete di Roma visitate questi siti: CAF, copisteria e soluzioni informatiche Se siete artigiani, hobbisti, artisti e collezionisti |
|
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 35
|
Quote:
... in che modo posso aprire la connessione a DB2? teoricamente dovrei specificare un database a cui connettermi con relativi username e password... la mia domanda è: quale database dal momento che il programma dovrebbe stamparli tutti senza che io sappia a priori quanti ce ne sono e quali sono?
__________________
~~~~~~~~~~~~~~~~~~ "Cogito ergo rhum" |
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano, la mia città, che amo perdutamente, anche se certe volte mi vien voglia di andare a vivere in campagna... ah-ah, oh-oh !
Messaggi: 454
|
Quote:
CLP "db2 list db directory". E' però un comando interattivo, e non so se possa essere invocato via JDBC. Aspè che vado nella documentazione e guardo.. |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Feb 2000
Città: Roma (S.E.) Trattative_concluse: 300+
Messaggi: 15735
|
Quote:
__________________
I ricordi sono sempre tristi: quelli brutti perchè sono amari, quelli belli perché sono solo ricordi
Dal mio corpo in putrefazione cresceranno dei fiori, e io sarò dentro di loro. Questa è l'eternità. (E. Munch) |
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 35
|
Quote:
... sono sempre più disperato
__________________
~~~~~~~~~~~~~~~~~~ "Cogito ergo rhum" |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: May 2000
Città: Roma
Messaggi: 808
|
Non vorrei sbagliarmi, è un pò che non smanetto con le tabelle di catalogo, ma esiste anche la
sysibm.sysdatabase che ti da l'elenco dei database Comunque almeno un database per attivare la connessione dovresti conoscerlo, altrimenti la vedo difficile.
__________________
Se siete di Roma visitate questi siti: CAF, copisteria e soluzioni informatiche Se siete artigiani, hobbisti, artisti e collezionisti |
|
|
|
|
|
#15 | |
|
Member
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 35
|
Quote:
__________________
~~~~~~~~~~~~~~~~~~ "Cogito ergo rhum" |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano, la mia città, che amo perdutamente, anche se certe volte mi vien voglia di andare a vivere in campagna... ah-ah, oh-oh !
Messaggi: 454
|
Quote:
In DB2 UDB ogni database ha il suo catalogo privato, che può quindi essere acceduto solo dopo una connessione esplicita. Secondo me l'unica è agganciare la CLP e dare il comando "db2 list db directory" e formattarsi l'output. |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano, la mia città, che amo perdutamente, anche se certe volte mi vien voglia di andare a vivere in campagna... ah-ah, oh-oh !
Messaggi: 454
|
Toh, forse ho trovato qualcosa di interessante.
____________________________________________________ sqledgne - Get Next Database Directory Entry Returns the next entry in the system database directory or the local database directory copy returned by sqledosd - Open Database Directory Scan. Subsequent calls to this API return additional entries. Authorization None Required connection None API include file sqlenv.h C API syntax /* File: sqlenv.h */ /* API: sqledgne */ /* ... */ SQL_API_RC SQL_API_FN sqledgne ( unsigned short Handle, struct sqledinfo **ppDbDirEntry, struct sqlca *pSqlca); /* ... */ Generic API syntax /* File: sqlenv.h */ /* API: sqlgdgne */ /* ... */ SQL_API_RC SQL_API_FN sqlgdgne ( unsigned short Handle, struct sqledinfo **ppDbDirEntry, struct sqlca *pSqlca); /* ... */ API parameters Handle Input. Identifier returned from the associated OPEN DATABASE DIRECTORY SCAN API. ppDbDirEntry Output. The caller supplies the API with the address of a pointer to an sqledinfo structure. The space for the directory data is allocated by the API, and a pointer to that space is returned to the caller. pSqlca Output. A pointer to the sqlca structure. REXX API syntax GET DATABASE DIRECTORY ENTRY :scanid [USING :value] REXX API parameters scanid A REXX host variable containing the identifier returned from the OPEN DATABASE DIRECTORY SCAN API. value A compound REXX host variable to which the database entry information is returned. If no name is given, the name SQLDINFO is used. In the following, XXX represents the host variable name (the corresponding field names are taken from the structure returned by the API): XXX.0 Number of elements in the variable (always 12) XXX.1 ALIAS (alias of the database) XXX.2 DBNAME (name of the database) XXX.3 DRIVE/PATH (local database directory path name) XXX.3.1 NODE NUMBER (valid for local database directory only) XXX.4 INTNAME (token identifying the database subdirectory) XXX.5 NODENAME (name of the node where the database is located) XXX.6 DBTYPE (product name and release number) XXX.7 COMMENT (comment associated with the database) XXX.8 Reserved XXX.9 TYPE (entry type) XXX.10 AUTHENTICATION (authentication type) XXX.10.1 DCE principal XXX.11 GLBDBNAME (Global database name) XXX.12 CATALOG NODE NUMBER Usage notes All fields of the directory entry information buffer are padded to the right with blanks. A subsequent GET NEXT DATABASE DIRECTORY ENTRY obtains the entry following the current entry. The sqlcode value of sqlca is set to 1014 if there are no more entries to scan when GET NEXT DATABASE DIRECTORY ENTRY is called. The count value returned by the OPEN DATABASE DIRECTORY SCAN API can be used to scan through the entire directory by issuing GET NEXT DATABASE DIRECTORY ENTRY calls, one at a time, until the number of scans equals the count of entries. Related reference sqledcls - Close Database Directory Scan sqledosd - Open Database Directory Scan SQLCA SQLEDINFO Related samples COBOL dbcat.cbl -- Catalog to and uncatalog from a database (IBM COBOL) dbcmt.cbl -- Change a database comment in the database directory (IBM COBOL) C ininfo.c -- Set and get information at the instance level (C) C++ ininfo.C -- Set and get information at the instance level (C++) ___________________________________________________ Questa la trovi documentata qui: ftp://ftp.software.ibm.com/ps/produc...r/db2b0e80.pdf Spero che ti aiuti Ciao |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:02.



















