2009-02-25 16 views
6

Utilizzo di Apache Derby con Java (J2ME, ma non credo che faccia la differenza) esiste un modo per verificare se un database esiste già e contiene una tabella?Derby Apache - Verifica database già creato?

+0

Vedere anche http://stackoverflow.com/questions/584497/apache-derby-check-database-already-created – Raedwald

risposta

10

Non ne conosco nessuno, ad eccezione di pochi lavori in giro, a differenza di MySQL dove abbiamo questa funzione di IF EXIST.

Quello che si fa è cercare di connettersi al database, se non è probabile che non sia lì. E dopo una connessione riuscita, puoi fare una semplice selezione, come SELECT count (*) FROM TABLE_NAME, per sapere se la tabella esiste o meno. Sarai dipendente dall'eccezione. Anche in un esempio ufficiale di Sun, ho visto il lavoro simile in giro.

In Oracle disponiamo di tabelle del dizionario per conoscere gli oggetti del database. Dubito che abbiamo qualcosa del genere in Derby.

[Edited]

Beh, ho scoperto che c'è un modo per sapere se la tabella esiste. Prova, SELEZIONA tablename FROM SYSTABLES. È per verificare l'esistenza di una tabella, per il controllo del database potrebbe essere necessario fare qualcosa di simile, ho spiegato sopra.

8

Adeel, si potrebbe anche usare Connection.getMetaData per restituire un oggetto DatabaseMetaData, quindi utilizzare il getTables, una volta che hai la connessione al database, naturalmente. Questo ha il vantaggio di lavorare per qualsiasi database con un driver JDBC che vale quanto sale.

Per verificare se il database esiste, se si utilizza Derby in modalità incorporata o se il server si trova sulla stessa macchina, è possibile verificare se esiste la cartella per il database. È un po 'folle però. Vorrei fare come suggerisce Adeel e provare a connettermi, rilevando l'eccezione se non è lì.

2

Suggerirei di ottenere l'oggetto DatabaseMetaData, quindi utilizzare il metodo getTables (null, null, null, new String [] {"TABLE"}) da esso, che restituisce un ResultSet. Utilizzare il metodo next() del ResultSet, che restituisce un valore booleano, per verificare se esistono tabelle. Se si verifica true, esistono tabelle esistenti. False e il database è vuoto.

Problemi correlati