Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111

    Come faccio a rilevare i DMBS installati nel sistema?

    Devo progettare un interfaccia che mi analizzi il sistema e mi dica quali DBMS sono installati, per esempio, se nel sistema ho installati MySQL e PostgreSQL mi restituisca l'elenco in modo che io possa creare una piccola interfaccia dove mostro all'utente le connessioni esistenti sulla sua macchina a motori DBMS e gli possa far fare il login a quella selezionata per poi poter accedere alle tabelle.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Difficile che tu lo riesca a fare in Java, senza utilizzare librerie di terze parti, che analizzano il sistema.
    Java è un linguaggio cross-platform, quindi tutto ciò che riguarda le peculiarità del sistema operativo non viene gestito.


    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

  3. #3
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Quoto in pieno la risposta di LeleFT.

    Aggiungo solo che, su sistemi WinXX alcuni DBMS, all'atto dell'installazione, scrivono su
    ODBC.ini e ODBCINST.ini sotto la root di Windows.

    Reperire da questi files i DSN dei DBs e i relativi drivers non dovrebbe essere complicato.

    Sottolineo che solo ALCUNI DBMS lo fanno (IBM DB2, ORACLE, SQLServer).

    NON LO FA (ne sono sicuro) MySQL.

    NON SO SE LO FA PostgreSQL.
    Ciao, Brainjar

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111
    Non avete idea allora di come si possa realizzare?
    Premetto che dovrà essere prevista pure l'utenza Linux oltre Windows.

    Vi spiego meglio, forse saprete identificare meglio la soluzione.
    Devono essere raccolti dati salvati in DBMS provenienti da client eterogenei (sia a livello di SO che di DBMS) e salvati e immagazzinati in un unico Database lato server.

    Avevo pensato ad un interfaccia lato client che possa instaurare connessioni con i DMBS installati sulle maccihne client e che possa avviare il trasferimento di dati da client a database centrale sul server.

  5. #5
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    L'idea, per Windows, è quella di leggerti quei due files e ricavarti la lista.
    Per Linux la vedo dura, ma dura, se non, per me (attualmente), impossibile.

    Edit:
    Si, allora si può fare se sei a conoscenza di quali db siano installati. O, in alternativa,
    qualo dovrebbero essere installati. A questo punto fai una scansione a tappeto.
    Ciao, Brainjar

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111
    Diciamo che posso far scegliere all'utente quale dbms ha installato, questo si, mi risparmierebbe di ricavarlo in automatico.
    Una volta che l'utente sceglie quale dbms ha installato, cosa intendi per scansione a tappeto?

  7. #7
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    La scansione a tappeto la intendo così :

    Ho una lista di DBMS con Nome, Driver, Server, Porta, User, Password

    codice:
    Nome (DSN)        Driver            Server               Porta     User  Password
    DBVendita           MySQL          192.14.36.52      3361      root  kkkkk 
    DBPersonale        ORACLE         192.14.36.80      1521      john  jjjjj 
    DBMagazz           MySQL          192.14.36.52      3362      jack  uuuu
    Allora faccio :
    codice:
    .....
    import java.sql.*;
    import java.util.*;
    .....
    
    // --------------------------------------------------------------------------------
    // Per ogni riga della lista 
    // --------------------------------------------------------------------------------
    driverDB        = .....
    serverName    = .....
    mydatabase   = ..... 
    username      = .....
    password      = .....
    porta           = ..... 
         
          if (openConnection(driverDB,serverName, mydatabase, username, password, porta))
              // ---- Sono connesso al DB
          else
             // ----  Non è possibile connettersi, quindi il db non è probabilmente installato  
    // --------------------------------------------------------------------------------
     
    
        public boolean  openConnection(String driverDB,  String serverName, String mydatabase, String username, String password, String porta) {
            
            if (driverDB.equalsIgnoreCase("MYSQL")) {
                driverName = "com.mysql.jdbc.Driver";
                url = "jdbc:mysql://" + serverName +  "/" + mydatabase;
            } else if (driverDB.equalsIgnoreCase("MSACCESS")) {
                driverName = "sun.jdbc.odbc.JdbcOdbcDriver";
                url = "jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=" + mydatabase + ";";
            } else if (driverDB.equalsIgnoreCase("ORACLE")) {
                driverName = "oracle.jdbc.driver.OracleDriver";
                url = "jdbc:oracle:thin:@" + serverName +  ":" + porta +  ":" + mydatabase;
            } else if (driverDB.equalsIgnoreCase("IBMDB2")) {
                driverName = "com.ibm.db2.jcc.DB2Driver";
                url = "jdbc:mysql://" + serverName  +  ":" + porta +  "/" + mydatabase;
            }
    
            try {
                // Load the JDBC driver
                Class.forName(driverName);
                Connettore = DriverManager.getConnection(url, u, p);
                return true;
            }  catch (ClassNotFoundException e) {
                // Could not find the database driver
                return false;
            }  catch (SQLException e) {
                // Could not connect to the database
                return false;
            }
        }
        // Nel codice vedi una faccina :D al suo posto ci va  due punti + D (":" + "D").
    Ovvio che i driver (i .jar) dei connettori devono essere raggiungibili dall'applicazione....
    Ciao, Brainjar

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111
    Grazie, credo di aver capito.
    Mi spieghi solo un'ultima cosa, io sono da poco passato ad eclipse e come faccio a creare un applicazione con le librerie dentro incorporate?

    Io finora qualsiasi applicazione ho dovuto sviluppare ha avuto come risultato finale solo i class dell'applicazione.

    E' possibile creare in eclipse un eseguibile con le librerie dentro?

  9. #9
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Non utilizzo eclipse.
    Le librerie (sto parlando dei jar) devono essere nel classpath dell'applicazione o in quello del
    runtime di java.
    Dipende da come sono dichiarate nel progetto. NetBeans 5.X, ad esempio, crea una
    directory dist in cui mette il jar dell'applicazione ed una sottodirectori di dist, lib, dove
    mette i jar delle librerie.


    Edit:

    Anche eclipse, comunque, ti dovrebbe permettere di creare un .jar di tutte le tue classi.
    Ciao, Brainjar

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2004
    Messaggi
    111
    Scusa ma la stringa di connessione a DB2 non è sbagliata?

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.