PDA

Visualizza la versione completa : [JAVA] Bean e Database...


Omar81
24-09-2002, 13:31
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;
}

}

Maldito
24-09-2002, 15:30
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

Omar81
24-09-2002, 17:23
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!

Omar81
24-09-2002, 17:25
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?

Maldito
24-09-2002, 17:28
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?
:ciauz:

Omar81
25-09-2002, 12:54
questo getStatement come dovrebbe essere fatto?
scusa ma non che sono molto pratico...sono solo all'inizio ;(

Grazie!

pippo75
25-09-2002, 14:03
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

Omar81
25-09-2002, 23:20
grazie, credo di avere capito e risolto il problema....
ma se volessi usare un costruttore come dovrei fare?... possibile?

pippo75
26-09-2002, 09:17
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

Loading