Autore Topic: Problema di connessione a MysqlDB tramite Mysql connector/J  (Letto 891 volte)

Offline nicozumel

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Huawei - P7
  • Sistema operativo:
    Windows 7
Problema di connessione a MysqlDB tramite Mysql connector/J
« il: 28 Maggio 2014, 12:40:59 CEST »
0
Buongiorno a tutti,
 questo è il mio primo post quindi spero di essere quanto più chiaro possibile. Mi trovo a sviluppare un app che deve collegarsi a un DB Mysql (in locale e su un NAS).  Premetto che il collegamento a questo DB lo uso già in ambiente .Net e Java con NetBeans.
Ora ci sto provando con Eclipse (4.3) per una app android e con connector mysql java 5.1.30.
Purtroppo quest'ultimo non mi sta riuscendo...non so se sia quello il motivo ma quando eseguo la funzione:
  DriverManager.getConnection(urlcon, "root", "xxxx");
Viene emessa una exception e il logcat mi da l' errore:

Codice: [Seleziona]
E/dalvikvm(896): Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeTo
Vi posto il semplice codice java utilizzato:

Codice (Java): [Seleziona]
import java.sql.*;
import java.util.Vector;

public class Database {
       
         private String nomeDB;       // Nome del Database a cui connettersi
           private String nomeUtente;   // Nome utente utilizzato per la connessione al Database
           private String pwdUtente;    // Password usata per la connessione al Database
           private String errore;       // Raccoglie informazioni riguardo l'ultima eccezione sollevata
           private Connection db;       // La connessione col Database
           private boolean connesso;    // Flag che indica se la connessione attiva o meno
           public String percorso;     // percorso del Database a cui connettersi


           public Database(String nomeDB) { this(nomeDB, "", "",""); }

           public Database(String nomeDB, String nomeUtente, String pwdUtente, String percors ) {
              DriverManager.setLoginTimeout(3);
              this.nomeDB = nomeDB;
              this.nomeUtente = nomeUtente;
              this.pwdUtente = pwdUtente;
              connesso = false;
              errore = "";
              this.percorso = percors;
           }
       
           // Apre la connessione con il Database
           public boolean connetti() {
              connesso = false;
              try {

                 // Carico il driver JDBC per la connessione con il database MySQL
                 Class.forName("com.mysql.jdbc.Driver");

                 // Controllo che il nome del Database non sia nulla
                 if (!nomeDB.equals("")) {

                    // Controllo se il nome utente va usato o meno per la connessione
                    if (nomeUtente.equals("")) {

                       // La connessione non richiede nome utente e password
                       db = DriverManager.getConnection("jdbc:mysql://"+percorso+"/" + nomeDB);
                    } else {

                       // La connessione richiede nome utente, controllo se necessita anche della password
                       if (pwdUtente.equals("")) {

                          // La connessione non necessita di password
                          db = DriverManager.getConnection("jdbc:mysql://"+percorso+"/" + nomeDB + "?user=" + nomeUtente);
                       } else {

                          // La connessione necessita della password
                           String urlcon = "jdbc:mysql://192.168.1.126:3306/nomedb";          
                          //db = DriverManager.getConnection("jdbc:mysql://"+percorso+"/" + nomeDB + "?user=" + nomeUtente + "&password=" + pwdUtente);
                          db = DriverManager.getConnection(urlcon, "user", "pwd");

                       }
                    }

                    // Connessione avvenuta con successo
                    connesso = true;
                 } else {
                    System.out.println("Manca il nome del database!!");
                    System.out.println("Scrivere il nome del database da utilizzare all'interno del file \"config.xml\"");
                    System.exit(0);
                 }
              } catch (Exception e) { errore = e.getMessage(); }
              return connesso;
           }

la classe javax.naming a cui fa rif. l'errore mi sembra una classe del JRE regolarmente collegata ad eclipse in preferences/installed JREs (nel mio specifico in c:\ programm files\Java\jre7.

Sono bloccato qui e non so proprio che altro verificare, qualsiasi suggerimento sarebbe molto gradito.
Grazie in anticipo
Nicola


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema di connessione a MysqlDB tramite Mysql connector/J
« Risposta #1 il: 28 Maggio 2014, 12:53:11 CEST »
0
Tieni in considerazione che Android non usa la JRE e non è 100% compatibile Java. Un bel po' di package sono stati "portati", ma non tutti. Questo per dire che un JAR funzionante in una applicazione java, non è detto che funzioni anche in una Android.

A parte la suddetta precisazione, se non sbaglio ho letto di implementazioni funzionanti di quello che vuoi fare (insomma è possibile in qualche modo), e dovresti trovare anche su questo stesso forum qualche post relativo all'accesso a mysql da android (ma non ricordo dove).
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline nicozumel

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Huawei - P7
  • Sistema operativo:
    Windows 7
Re:Problema di connessione a MysqlDB tramite Mysql connector/J
« Risposta #2 il: 28 Maggio 2014, 15:50:34 CEST »
0
Tieni in considerazione che Android non usa la JRE e non è 100% compatibile Java. Un bel po' di package sono stati "portati", ma non tutti. Questo per dire che un JAR funzionante in una applicazione java, non è detto che funzioni anche in una Android.

A parte la suddetta precisazione, se non sbaglio ho letto di implementazioni funzionanti di quello che vuoi fare (insomma è possibile in qualche modo), e dovresti trovare anche su questo stesso forum qualche post relativo all'accesso a mysql da android (ma non ricordo dove).

Quello che volevo evitare era di usare 2 altre tecnologie (PHP + JSON) per ottenere un risultato che già dovrebbe essere essere insito nello sviluppo (Andoid + java.sql).
Proverò a fare una ricerca approfondita sul forum per vedere se altri hanno avuto un problema simile.
Grazie
Nicola
 

Offline tonno16

  • Utente storico
  • *****
  • Post: 1187
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Problema di connessione a MysqlDB tramite Mysql connector/J
« Risposta #3 il: 28 Maggio 2014, 21:32:37 CEST »
0
guarda io non ti so dire il perchè, pero anche io uso quella libreria e per operazioni sul database uso jbcd.

questo è cio che ho io:
Codice (Java): [Seleziona]
try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                retval = e.toString();
            }
         
            String url = "jdbc:mysql://sql2.freemysqlhosting.net:3306/nomedb";
            String username = "user";
            String password = "password";
            Connection conn;
     
            try {
                DriverManager.setLoginTimeout(5);
                conn = DriverManager.getConnection(url,username,password);
                Statement st = conn.createStatement();
                String sql="select * from qualcosa";
               
                ResultSet rs ) st.execute(sql);
                           
                rs.close();
                st.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
                retval = e.toString();
            }
                        return retval;                    
           
        }

ho provato anche in locale settando password vuota (mysql su xamp la mette vuota di default), dunque ho impostato String password="" e usata la variabile nello stesso modo. Mai Avuto problemi

Offline nicozumel

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Huawei - P7
  • Sistema operativo:
    Windows 7
Re:Problema di connessione a MysqlDB tramite Mysql connector/J
« Risposta #4 il: 29 Maggio 2014, 09:27:23 CEST »
0
guarda io non ti so dire il perchè, pero anche io uso quella libreria e per operazioni sul database uso jbcd.

questo è cio che ho io:
Codice (Java): [Seleziona]
try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                retval = e.toString();
            }
         
            String url = "jdbc:mysql://sql2.freemysqlhosting.net:3306/nomedb";
            String username = "user";
            String password = "password";
            Connection conn;
     
            try {
                DriverManager.setLoginTimeout(5);
                conn = DriverManager.getConnection(url,username,password);
.....

ho provato anche in locale settando password vuota (mysql su xamp la mette vuota di default), dunque ho impostato String password="" e usata la variabile nello stesso modo. Mai Avuto problemi

Ciao, io uso le stesse istruzioni ma non va: si ferma all'istruzione getconnection.

I casi potrebbero essere 2:
- O sbaglio la configurazione in Eclipse: - in referenced Libraries o inserito il mysql-connector-java-5.1.30-bin.jar
                                                                  - in cartella libs ho copiato lo stesso file 'mysql-connector-java-5.1.30-bin.jar'
- Oppure forse la versione del connector (la ultima scaricata dal sito di Oracle) ha qualche problema. Tu che versione usi?
Non so che altro pensare...




Offline tonno16

  • Utente storico
  • *****
  • Post: 1187
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Problema di connessione a MysqlDB tramite Mysql connector/J
« Risposta #5 il: 29 Maggio 2014, 23:56:49 CEST »
0
io uso la stessa versione.

Mi ricordo però di avere installato un file exe sul mio pc....non ricordo quale.
inoltre hai fatto oltre l'aggiunta nella cartella anche project->confogure build-path e aggiunto la libreria?
Inoltre su ogni activity io faccio import com.mysql.jbcd.Driver

Offline nicozumel

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Huawei - P7
  • Sistema operativo:
    Windows 7
Re:Problema di connessione a MysqlDB tramite Mysql connector/J
« Risposta #6 il: 30 Maggio 2014, 17:03:54 CEST »
0
io uso la stessa versione.

Mi ricordo però di avere installato un file exe sul mio pc....non ricordo quale.
inoltre hai fatto oltre l'aggiunta nella cartella anche project->confogure build-path e aggiunto la libreria?
Inoltre su ogni activity io faccio import com.mysql.jbcd.Driver

Il tuo file exe che non ricordi mi ha fatto accendere una lampadina, ho scaricato l'ultimo JDK 7.6, ho inserito nell'activity l'import da te menzionato e infine ho controllato che in Referenced Libraries vi sia il 'mysql-connector-java-5.1.30-bin.jar'.... sembra tutto a posto , ma non va, mi da sempre quel maledetto errore:
Codice: [Seleziona]
05-30 11:00:29.660: E/dalvikvm(1283): Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeToNon so che altro provare... :(((

Offline tonno16

  • Utente storico
  • *****
  • Post: 1187
  • Respect: +57
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Problema di connessione a MysqlDB tramite Mysql connector/J
« Risposta #7 il: 30 Maggio 2014, 21:22:22 CEST »
0
dammi la tua email che ti invio un progetto funzionante. Vorrei Allegarlo ma occupa più della dimensione massima

Offline nicozumel

  • Nuovo arrivato
  • *
  • Post: 39
  • Respect: +4
    • Mostra profilo
  • Dispositivo Android:
    Huawei - P7
  • Sistema operativo:
    Windows 7
Re:Problema di connessione a MysqlDB tramite Mysql connector/J
« Risposta #8 il: 31 Maggio 2014, 08:27:02 CEST »
0
OK
********@gmail.com

Grazie mille...
Ciao
« Ultima modifica: 02 Giugno 2014, 00:03:57 CEST da nicozumel »