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

    [JAVA] Bean e Database...

    questa è la classe che ho preparato per la connessione ad un database mySQL.
    ottengo pero l'errore:
    java.lang.ClassCastException: TECWEB.Connetti

    qualcuno mi sa aiutare?

    grazie!

    package TECWEB;

    import java.sql.*;
    import javax.sql.*;

    public class Connetti{

    private Connetti(){
    java.sql.Statement st = null;
    try{
    Class.forName("com.mysql.jdbc.Driver").newInstance ();
    java.sql.Connection con = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/tecweb");
    st = con.createStatement();
    }catch(ClassNotFoundException cnfex ){
    System.out.println("Impossibile trovare driver");
    }catch(Exception e ){
    System.out.println("Errore \r\n" + e);
    e.printStackTrace(System.out);
    }
    }

    public static java.sql.Statement mySQLConnection(){
    java.sql.Statement st = null;
    try{
    st = (java.sql.Statement)new Connetti();
    }catch (Exception e){
    System.out.println(e);
    }
    return st;
    }

    }
    0m4r
    http://omar.adobati.it

  2. #2
    Utente bannato
    Registrato dal
    Sep 2001
    Messaggi
    413

    Re: [JAVA] Bean e Database...

    Originariamente inviato da Omar81
    public static java.sql.Statement mySQLConnection(){
    java.sql.Statement st = null;
    try{
    st = (java.sql.Statement)new Connetti();
    }catch (Exception e){
    System.out.println(e);
    }
    return st;
    }

    } [/B]

    come fa a castare un'istanza di Connetti a java.sql.Statement, della quale Connetti non è nemmeno un'estensione?


    l'errore è li!

    fai un metodo che ti ritorna una Statement all'interno della classe Connetti e usa quello per assegnarlo a st. Ciao

  3. #3
    scusa ma credo di non avere capito bene....
    potresti spiegarti magari con un esempio?
    come la estendo la classe connetti per fare cio che mi serve? cioè cosa ci metto dopo extends???

    Grazie!
    0m4r
    http://omar.adobati.it

  4. #4

    Re: [JAVA] Bean e Database...

    Originariamente inviato da Omar81
    package TECWEB;

    import java.sql.*;
    import javax.sql.*;

    public class Connetti{

    private Connetti(){
    java.sql.Statement st = null;
    try{
    Class.forName("com.mysql.jdbc.Driver").newInstance ();
    java.sql.Connection con = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/tecweb");
    st = con.createStatement();
    }catch(ClassNotFoundException cnfex ){
    System.out.println("Impossibile trovare driver");
    }catch(Exception e ){
    System.out.println("Errore \r\n" + e);
    e.printStackTrace(System.out);
    }
    }

    public static java.sql.Statement mySQLConnection(){
    java.sql.Statement st = null;
    try{
    st = (java.sql.Statement)new Connetti();
    }catch (Exception e){
    System.out.println(e);
    }
    return st;
    }

    } [/B]

    fai un metodo che ti ritorna una Statement all'interno della classe Connetti e usa quello per assegnarlo a st. Ciao
    io credevo di averlo fatto con il metodo public static java.sql.Statement mySQLConnection(){....dove sbaglio?
    0m4r
    http://omar.adobati.it

  5. #5
    Utente bannato
    Registrato dal
    Sep 2001
    Messaggi
    413
    no, non dicevo che devi estendere la classe, sarebbe una logica sbagliatissima.

    direi di aggiungere un metodo alla tua classe Connetti e chiamarlo per esempio "getStatement()" al quale fai restituire come ritorno lo Statement .. capito ora?


    cioè.. il tuo errore è qui

    st = (java.sql.Statement)new Connetti();


    quando tu facendo "new Connetti()" ottieni un'istanza della classe Connetti che cerchi di castare "(java.sql.Statement)" a Statement, che è un'altra classe, per poi farlo puntare da st.

    tu dovresti aggiungere questo metodo getStatement alla classe Connetti, e poi fare
    st = new Connetti().getStatement(); claro?

  6. #6
    questo getStatement come dovrebbe essere fatto?
    scusa ma non è che sono molto pratico...sono solo all'inizio ;(

    Grazie!
    0m4r
    http://omar.adobati.it

  7. #7
    prendi le righe di codice che hai utilizzato all'interno del costruttore, e le inserisci nel metodo getConnection()
    ovviamente alla fine dovrai ritornare lo statement

    e il costruttore lo lasci vuoto
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

  8. #8
    grazie, credo di avere capito e risolto il problema....
    ma se volessi usare un costruttore come dovrei fare?...è possibile?
    0m4r
    http://omar.adobati.it

  9. #9
    credo dovresti estendere con la tua classe la classe Statement.
    Ma di solito non è una buona maniera di programmare a oggetti.
    Piuttosto si utilizzano appunto dei metodi come quello descritto: c'è un metodo per ottenere la connessione, uno per eseguire le query ecc
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

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 © 2024 vBulletin Solutions, Inc. All rights reserved.