Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [JAVA] Java & mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    106

    [JAVA] Java & mysql

    Ciao ragazzi,

    qualcuno è in grado di dirmi se esiste una istruzione mysql per capire se un database esiste già?

    Mi spiego: dovrei fare in modo che, al primo avvio, l'utente crei un database. Se, pero' un db con lo stesso nome specificato dall'utente esiste già, devo fare in modo che venga chiesto se sovrascriverlo o meno.

    Ciao e grazie

  2. #2
    Con

    codice:
     SHOW SCHEMAS
    Ottieni la lista dei db presenti nel dbms

    ovviamente devi avere i permessi(grant) per poter eseguire l'istruzione.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    106
    Ciao e grazie del tuo aiuto.

    Il mio problema è che devo creare un metodo che verifichi l'esistenza del db. Ho parzialmente risolto il problema in questo modo

    public boolean verificaEsistenzaDB(){
    Statement statement;
    int result = 0;
    boolean esiste = false;

    if(verificaConnessione()){
    connetti_MySql();

    try {
    statement = connection_MySql.createStatement();
    result = statement.executeUpdate(useDb+nomeDB);
    esiste = true;
    statement.close();
    } catch (SQLException e) {esiste = false;}

    disconnetti_MySql();

    }

    return esiste;

    }

    pero' non mi sembra la cosa migliore.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Devi chiarire un po' le tue idee.
    Differenza fra DB e DBMS.

    DBMS: MySQL
    DB: un qualunque "schema" di DB presente nel DBMS (esempio, "test").

    Tu devi verificare la presenza del DBMS MySQL o di un DB al suo interno?

    Per la prima è sufficiente verificare se la connessione viene instaurata. Quindi:
    codice:
    try {
       Class.forName("com.mysql.jdbc.Driver");
       Connection db = DriverManager.getConnection("jdbc:mysql://" + host + "/test" + "?user=" + nomeUtente + "&password=" + pwdUtente);
    
       // Se arrivo qui il DBMS è installato (ed è anche presente il DB "test")
    } catch (Exception e) {
       // Nessuna connessione: è possibile che il DBMS non sia installato
    }
    Per la seconda, devi seguire il consiglio di peppem:
    codice:
    try {
       Statement stmt = db.createStatement();
       ResultSet rs = stmt.executeQuery("SHOW DATABASES");   // o SHOW SCHEMAS
    
       // Scorri il ResultSet alla ricerca del DB che ti interessa
       String dbInteresse = "...";
       boolean trovato = false;
       while(!trovato && rs.next()) {   // Scorro tutto il ResultSet
          String nDb = rs.getString( 1 );
          trovato = nDb.equalsIgnoreCase( dbInteresse );
       }
    
       if ( trovato ) {
          // Il DB esiste
       } else {
          // Il DB non esiste
       }
    } catch (Exception e) {
       // Errore durante l'esecuzione dell'istruzione
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    106
    Il mio problema, infatti, è capire se un db esiste già. La connessione a mysql l'ho verificata e voglio solo capire se un db esiste. Ecco perchè la mia soluzione "adattata" cercava di usare un db.

    Ad ogni modo credo che la seconda parte di codice da te postata puo' essermi di grande aiuto.

    Ciao e grazie

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Tecnicamente puoi scoprire se un DB esiste anche provando direttamente la connessione.
    Se la getConnection() diretta ad un particolare DB fallisce, significa che quel DB non esiste (o che l'utente con cui ti stai collegando non ha sufficienti privilegi per potervi accedere, che è materialmente equivalente).

    Non ho mai provato a connettermi ad un DB inesistente... ma puoi provare tu.

    Credo che l'eccezione sollevata sia diversa a seconda che il DBMS non sia presente/pronto o che il DB a cui colegarsi non esista.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.