Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Connessione ad un database online

    Ciao a tutti

    Ecco il mio problema:
    ho creato un database online che consente connessioni esterne e da remoto, vorrei, inizialmente, connettere la mia applicazione (sviluppo in eclipse) a tale database.

    //*******
    Ecco ciò che mi è stato fornito dal provider (dnshosting):
    url: mysql.MIOSITO .dnshosting.it
    username: MIOUSERNAME
    password: MIAPASSWORD
    Ecco il nome del database: uxy313gc_jpack
    Ecco la tabella all'interno del tabase: users
    //*******

    codice:
    package com.example.provadatabase; 
    import java.sql.*; 
    public class MainActivity { 
    public static void main (String args[]) { 
    try { 
    String driver = "com.mysql.jdbc.Driver"; 
    Class.forName(driver); 
    String url = "jdbc:mysql.MIOSITO.dnshosting.it/uxy313gc_jpack"; 
    Connection con = DriverManager.getConnection (url, "MIOUSERNAME ", "MIAPASSWORD"); 
    Statement cmd = con.createStatement (); 
    String qry = "SELECT * FROM users"; 
    ResultSet res = cmd.executeQuery(qry); 
    while (res.next()) { 
    System.out.println(res.getString("vorrei avere una colonna della tabella"));
    } 
    res.close(); 
    cmd.close(); 
    con.close(); 
    } catch (SQLException e) { 
    e.printStackTrace(); 
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    } 
    } 
    }
    dove ho scritto "vorrei avere una colonna della tabella" non so cosa mettere per far si che mi restituisca cio che voglio...
    Il codice non va... lanciando l'applicazione essa mi va in errore e crasha!
    Dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    La tabella users che colonne contiene? Metti una di quelle..

    Tu cosa scrivi? Che errore ti da?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: Connessione ad un database online

    Originariamente inviato da peppegiuseppe
    Il codice non va... lanciando l'applicazione essa mi va in errore e crasha!
    Dove sbaglio?
    Dire "Il codice non va" non aiuta a capire quale sia il problema.
    Nemmeno scrivere "l'applicazione mi va in errore e crasha" non aiuta a capire quale sia il problema.

    Il problema lo si capisce se posti l'eccezione che viene sollevata, completa di tutto il suo stackTrace.

    Ad ogni modo, i metodi getXXX di ResultSet prevedono due possibili forme (prendo, ad esempio, il getString() che hai usato tu): una prevede di passare il nome del campo (della colonna), l'altra prevede di passare l'indice del campo(della colonna). Se, ad esempio, la prima colonna si chiama "ID_Utente", puoi ottenere i valori di questa colonna in questi due modi:

    codice:
    String valoreCampo = rs.getString("ID_Utente");
    
    oppure
    
    String valoreCampo = rs.getString( 1 );
    La prima forma prevede che tu conosca i nomi dei campi della tabella, la seconda, invece, è più flessibile perchè guarda solo alla posizione dei campi nella query.


    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

  4. #4
    Eccomi,

    l'applicazione quando viene lanciata crasha dando come messaggio: "Sorry! The application ProvaDatabase (process com.example.provadatabase) has stopped unexpectedly. Please try again"

    LogCat:
    codice:
    06-27 10:15:36.626: D/AndroidRuntime(427): Shutting down VM 
    06-27 10:15:36.676: W/dalvikvm(427): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
    06-27 10:15:36.736: E/AndroidRuntime(427): FATAL EXCEPTION: main 
    06-27 10:15:36.736: E/AndroidRuntime(427): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.provadatabase/com.example.provadatabase.MainActivity}: java.lang.ClassCastException: com.example.provadatabase.MainActivity 
    06-27 10:15:36.736: E/AndroidRuntime(427): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    06-27 10:15:36.736: E/AndroidRuntime(427): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at android.os.Handler.dispatchMessage(Handler.java:99) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at android.os.Looper.loop(Looper.java:123) 06-27 10:15:36.736: E/AndroidRuntime(427): at android.app.ActivityThread.main(ActivityThread.java:4627) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at java.lang.reflect.Method.invokeNative(Native Method) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at java.lang.reflect.Method.invoke(Method.java:521) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at dalvik.system.NativeStart.main(Native Method) 
    06-27 10:15:36.736: E/AndroidRuntime(427): Caused by: java.lang.ClassCastException: com.example.provadatabase.MainActivity 
    06-27 10:15:36.736: E/AndroidRuntime(427): at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
    06-27 10:15:36.736: E/AndroidRuntime(427): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
    06-27 10:15:36.736: E/AndroidRuntime(427): ... 11 more
    Ps. ho modificato così
    codice:
    while (res.next()) { 
    System.out.println(res.getString(1)); 
    }

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da peppegiuseppe
    06-27 10:15:36.736: E/AndroidRuntime(427): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.provadatabase/com.example.provadatabase.MainActivity}: java.lang.ClassCastException: com.example.provadatabase.MainActivity
    Dal codice iniziale non avevo dedotto che sei su Android (la classe l'hai chiamata MainActivity ma in effetti aveva il main, per questo ho pensato ad una app desktop standalone).

    Ho l'impressione che hai un po' di confusione ... su Android le classi di activity estendono Activity (la tua no) e non partono dal main().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Mmmh ok
    quindi cosa dovreie modificare? Non ho ben chiaro il tutto...

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da peppegiuseppe
    Mmmh ok
    quindi cosa dovreie modificare? Non ho ben chiaro il tutto...
    Più che "cosa dovrei modificare", chiediti "cosa dovrei sapere".
    Quel codice è per una applicazione per PC.
    Le applicazioni Android sono completamente diverse, hanno un ciclo di vita completamente diverso e devono essere scritte pensando appositamente al tipo di applicazione che si deve ottenere.

    Quindi, non è che ci sia qualcosa da modificare, è che proprio va riscritta completamente. E dovresti partire da qui.


    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

  8. #8
    Ma anche volendo in una applicazione desktop, se tu scrivi:
    codice:
    String qry = "SELECT * FROM users"; 
    ResultSet res = cmd.executeQuery(qry); 
    while (res.next()) { 
    System.out.println(res.getString( 1 ));
    Non specificando alcun campo (SELECT * ) nessun campo ti verrà ritornato con l'istruzione rs.getString( 1 ) o forse ti sarà ritornato, ma chi ti dice che sia uno String?
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da schumy2000
    Ma anche volendo in una applicazione desktop, se tu scrivi:
    codice:
    String qry = "SELECT * FROM users"; 
    ResultSet res = cmd.executeQuery(qry); 
    while (res.next()) { 
    System.out.println(res.getString( 1 ));
    Non specificando alcun campo (SELECT * ) nessun campo ti verrà ritornato con l'istruzione rs.getString( 1 ) o forse ti sarà ritornato, ma chi ti dice che sia uno String?
    Ehm... "SELECT * FROM users" significa "seleziona tutti i campi della tabella users".

    Il getString(), inoltre, restituisce la rappresentazione stringa del valore campo. Difficilmente il getString() andrà in errore: può andare in errore su campi di tipo BLOB, CLOB o se si usa il bridge JDBC-ODBC su sistemi a 64 bit per connessioni verso database DB2 su AS400, maledetto lui, ma per tutti gli altri campi funziona bene.


    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.