Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    [Java]Applet & Database

    Salve a tutti!
    Sto in questa situazione :

    ho un applet che accede ad un db per caricare delle credenziali di accesso per fornirle poi ad un'altra classe che le gestisce.
    Il database è online ad un determinato indirizzo, e riesco ad accedere dall'esterno con MySqlAdmin.

    Ora :
    se eseguo tutto sotto netbeans, carica correttamente queste credenziali, se invece
    impacchetto tutto nel jar, firmo il jar ed eseguo l'applet sotto browser, non mi riesce ad accedere al DB.

    Se uso il db in locale, invece funziona tutto(ma ora mi appresto a fare un'altra verifica per esserne certo)

    C'è qualcosa che non so sulle applet ?
    Possono accedere al DB solo se è situato sulla macchina che le distribuisce ?
    e cmq nemmeno nell'ultimo caso funziona, cioè se carico l'applet sulla stessa macchina del DB e la eseguo, fa lo stesso, non riesce ad accedere al DB.

    Consigli ?

  2. #2
    ma il db accetta le connessioni dall'indirizzo pubblico? se si, l'utente con cui ti connetti ha i privilegi di accesso per quell'indirizzo?
    I DON'T Double Click!

  3. #3
    si, entrambe si.

    Cmq ho riprovato, in locale mi funziona tutto, in pubblico nn ne vuole sapere.

  4. #4
    ma perchè poi se tengo il db in locale, funziona tutto
    e quando lo metto in pubblico nn va più ??
    E' un problema della mia applicazione ? o di configurazione di rete ?

  5. #5

    Test

    Ho provato a fare una semplice applet che fa una query al DB, solo che questa volta non funziona manco con il db in locale, eseguita dal browser.
    edit : in locale funziona tutto, sia sotto netbeans che sotto tomcat quindi nel browser
    Che dite?

    Codice PHP:
    import java.awt.Graphics;
    import javax.swing.*;

    public class 
    Applet extends JApplet {

      
    String usernamepwdp="4545";

        public 
    void init() {

          
    //connessione al db
          
    myString error = new myString();
          
    DatabaseManager  db =  new DatabaseManager("nomeDB""utente" ,"password");
          
    Object obj[] = new Object[1];
          
          try {
               
    db.absConnect(error);
          }
          catch (
    Exception E) {
               
    error.setString("Impossibile caricare il driver");
               
    E.printStackTrace();
          }

          if (
    db != null)   {
          
    // I campi recuperati dal database
              
    String query " SELECT user, pwd  FROM tabella WHERE p ='"+"'";
              if(
    db.executeQuery(queryerror)==false) return;

          }
          else {
              
    error.setString("Database non valido");
              return ;
          }
          
          
    obj db.getRow(error);
          if  (
    obj!=null) {
              
    username obj[0].toString();
              
    pwd obj[1].toString();
              
    error.setString("");
          }
          else {
                
    // Restituisce un errore
                
    error.setString("Nessun contatto trovato");
                return ;
          }
        }        

     public 
    void paint (Graphics g){
                
             
    g.drawString("Username = "+username,36,85);   
             
    g.drawString("Password = " pwd,36,105);

          
     }
    //fine paint

    Questa è una parte della classe database manager :

    Codice PHP:
    import java.sql.*;

    public class 
    DatabaseManager {
        
        private 
    Connection con;
        private 
    ResultSet rs;
        private 
    String database;
        private 
    String user;
        private 
    String passwd;
        private 
    Statement stmt;

        public 
    DatabaseManager(String databaseString userString passwd)
        {
            
    this.database database;
            
    this.user user;
            
    this.passwd passwd;
            
    this.con null;
            
    this.stmt null;
            
    this.rs null;
        }

        public 
    void setUser(String user)
        {
            
    this.user user;
        }
        public 
    void setPasswd(String passwd)
        {
            
    this.passwd passwd;
        }

        public 
    boolean connect(myString error)
        {
            try
            {
                
    // Registra il driver MySQL
                
    Class.forName("org.gjt.mm.mysql.Driver");

                
    String conn "jdbc:mysql://localhost:3306/" this.database "?user=" this.user "&password=" this.passwd;
                
    // Effettua la connessione
                
    con DriverManager.getConnection(conn);
                
    stmt con.createStatement();
            }
            catch (
    ClassNotFoundException e)
            {
                
    error.setString(e.getMessage());
                return 
    false;
            }
            catch(
    SQLException e)
            {
                try
                {
                    if(
    con != nullcon.close();
                }
                catch(
    SQLException ignored)
                {
                    
    error.setString(e.getMessage());
                    return 
    false;
                }
            }

            
    // Notifica il successo delle operazioni
            
    error.setString("Connessione riuscita");
            return 
    true;
        }

        public 
    boolean executeQuery(String querymyString error)
        {
            try
            {
                if(
    stmt != null)
                {
                    
    rs stmt.executeQuery(query);
                }
                else
                {
                    
    rs null;
                    
    error.setString("Connessione non valida");
                    return 
    false;
                }
            }
            catch (
    SQLException e)
            {
                
    error.setString(e.getMessage());
                
    rs null;
                return 
    false;
            }

            
    // Notifica il successo delle operazioni

            
    error.setString("Query eseguita con successo");
            return 
    true;

        }

        public 
    Object[] getRow(myString error)
        {
            try
            {
                
    // Sposta il cursore in avanti
                
    if(!rs.next())
                {
                    
    error.setString("Dati non validi");
                    return 
    null;
                }

                
    // Inizializza le variabili interne
                
    ResultSetMetaData rsmd rs.getMetaData();
                
    int numColums rsmd.getColumnCount();
                
    Object[] objs = new Object[numColums];

                
    // Crea l'array di oggetti da restituire
                
    for(int i 1<= numColumsi++)
                {
                    
    objs[1] = rs.getObject(i);
                }

                
    // Restitusce gli oggetti
                
    error.setString("Nessun errore");
                return 
    objs;
            }
            catch (
    SQLException e)
            {
                
    error.setString(e.getMessage());
                return 
    null;
            }
        } 

  6. #6
    String conn = "jdbc:mysql://localhost:3306/" + this.database + "?user=" + this.user + "&password=" + this.passwd;

    MA TU NON GLI PASSI L'HOST.

    La stringa di connessione è fatta solo per effettuare connessioni locali.

    È chiaro che non hai capito cosa ti ho chiesto nel mio messaggio di prima.... Sai che differenza c'è nel fare una connessione da localhost o da un IP pubblico?
    I DON'T Double Click!

  7. #7
    Originariamente inviato da artorius
    String conn = "jdbc:mysql://localhost:3306/" + this.database + "?user=" + this.user + "&password=" + this.passwd;

    MA TU NON GLI PASSI L'HOST.

    La stringa di connessione è fatta solo per effettuare connessioni locali.

    È chiaro che non hai capito cosa ti ho chiesto nel mio messaggio di prima.... Sai che differenza c'è nel fare una connessione da localhost o da un IP pubblico?
    no no aspetta, per pubblicare il codice qui ho messo localhost, è chiaro che al posto di localhost nel mio codice c'è il dominio che uso.

    Cmq continuo ad avere lo stesso problema, nel senso che con il DB in locale funziona tutto(sia netbeans che sotto browser), con quello pubblico solo da netbeans.

  8. #8
    non vorrei dire... ma se uno non ha org.gjt.mm.mysql.Driver nel classpath? Hai inserito il pacchetto nel JAR?
    I DON'T Double Click!

  9. #9
    Originariamente inviato da artorius
    non vorrei dire... ma se uno non ha org.gjt.mm.mysql.Driver nel classpath? Hai inserito il pacchetto nel JAR?
    Allora per il pacchetto JAR del driver, ce l'ho nella stessa cartella del jar dell'applet,
    e lo importo con nel tag ARCHIVE.

    Che intendi per classpath di org.gjt.mm.mysql.Driver ? cioè come lo imposto ? (scusa la nubbiezza)

    cmq, grazie!

  10. #10
    se è nello stesso pacchetto dell'applet dovrebbe importarlo da solo...

    comunque, se fai una connessione da NetBeans verso il DB server che usi, quindi NON in locale, riesci ad aprirlo?
    I DON'T Double Click!

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.