Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    27

    [Java & dbms H2] Come controllare se il DB è già stato creato?

    Ciao a tutti,
    sto lavorando su eclipse, utilizzando un dbms di appoggio che è H2.
    Ho un problema...praticamente sto utilizzando una classe di prova con il main entro il quale vado a fare le operazioni che mi interessano. In particolare dentro il main vengono invocati una serie di metodi definiti nel progetto esistente che servono a creare il db e a creare delle viste SQL.
    Il fatto è che una volta che invoco il main vengono creati il DB e le viste, se entrambi non esistono. Il problema è che se esistono mi da errore perchè ovviamente già sono stati creati.
    In partica quando devo fare queste prove e lanciare il main, se non esistono ok, altrimenti devono mettere tra commenti le linee di codice per le rispettive creazioni.
    Come posso fare per superare questo inconveniente?...e cioè che se già esistono allora devo ignorare i passi per la creazione del db e viste!!!
    Se devo usare dei metodi particolari, vi chiedo per favore se potete indicarmeli...
    vi ringrazio

  2. #2
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Immagino che per errore tu intenda eccezione.

    Mai sentito parlare di try e catch? Sono due amichetti che vanno spesso assieme, ma non sempre. In pratica se il primo non riesce a fare una cosa, il secondo ne fa un'altra.

    codice:
    try
    {
      // Fai una singola operazione sul db
    }
    catch (Exception e)
    {
      System.out.println ("Operazione non necessaria blablabla...");
    }
    Con una serie di amichetti come questi il tuo problema dovrebbe essere risolto...
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    27
    si scusa, intendevo eccezione... ma ho già provato con la try-catch e nn andava lo stesso!
    Continua a darmi eccezioni:

    org.h2.jdbc.JdbcSQLException: Table tabella1 already exists [42101-74]
    at org.h2.message.Message.getSQLException(Message.jav a:103)
    at org.h2.message.Message.getSQLException(Message.jav a:114)
    at org.h2.message.Message.getSQLException(Message.jav a:77)
    at org.h2.command.ddl.CreateTable.update(CreateTable. java:113)
    at org.h2.command.CommandContainer.update(CommandCont ainer.java:69)
    at org.h2.command.Command.executeUpdate(Command.java: 203)
    at org.h2.jdbc.JdbcStatement.executeUpdate(JdbcStatem ent.java:117)
    .............

  4. #4
    Ti ricordo che SQL nella sua sintassi per la creazione e/o modifica di DB e tabelle ha anche l'opzione IF NOT EXISTS.

    Esempio:
    Codice PHP:
    CREATE TABLE IF NOT EXISTS tbl_name 
    Al tuo posto aggiungerei questa opzione nel metodo che crea la tabella e/o il DataBase.
    Se tale metodo usa JDBC la cosa è semplice (basta aggiungere il IF NOT EXISTS nell'istruzione SQL), nel caso si usi framework come Hibernate la cosa potrebbe risultare un pò più ostica...cmq Hibernate ed i vari framework hanno nei loro siti delle guide....
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  5. #5
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Originariamente inviato da db10
    si scusa, intendevo eccezione... ma ho già provato con la try-catch e nn andava lo stesso!
    Continua a darmi eccezioni:

    org.h2.jdbc.JdbcSQLException: Table tabella1 already exists [42101-74]
    at org.h2.message.Message.getSQLException(Message.jav a:103)
    at org.h2.message.Message.getSQLException(Message.jav a:114)
    at org.h2.message.Message.getSQLException(Message.jav a:77)
    at org.h2.command.ddl.CreateTable.update(CreateTable. java:113)
    at org.h2.command.CommandContainer.update(CommandCont ainer.java:69)
    at org.h2.command.Command.executeUpdate(Command.java: 203)
    at org.h2.jdbc.JdbcStatement.executeUpdate(JdbcStatem ent.java:117)
    .............
    Scusa, ma se lo punti dalla parte sbagliata non ti basta un bazooka per centrare una bottiglia appoggiata in cucina...

    se fai qualcosa all'interno di un blocco di try e nel blocco di cacth non rilanci l'eccezione, col cavolo che quella eccezione si propaga. Altrimenti non stai usando java.
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.