Newsgroup: it.comp.java
Titolo: problem con sun.jdbc.odbc.JdbcOdbcDriver

salve a tutti.
sono inesperto con java e stavo provando del codice trovato sulla rete per
accedere a dei db.
alla fine ho scritto quanto segue:
import java.sql.*;
import java.util.*;
import sun.jdbc.odbc.*;
public class GestioneDati {
    /** Creates a new instance of Class */
    public GestioneDati() {
        String url = "jdbc:odbc:dbfPROVA";
        Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
        Connection con = DriverManager.getConnection(url, "", "");
                Statement stmt = con.createStatement();
        String query = "SELECT CD_CAMPO1,CD_CAMPO2 FROM PROVA";
        ResultSet rs = stmt.executeQuery(query);
        while (rs.next()) {
            String s = rs.getString("CD_CAMPO1");
             String n = rs.getString("CD_CAMPO2");
            System.out.println(s + "   " + n);
}
    }
}
---
il problema e' che in compilazione mi dice:
GestioneDati.java [36:1] cannot resolve symbol
symbol  : class odbc
location: package jdbc
        Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
                              ^
1 error
non riesco a capire quale sia il problema...
qualche idea?
ciao e grazie.

         Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
Il metodo forName accetta in ingresso una stringa, quindi devi scrivere:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Gaetano Bigliardi


grazie mille per la pronta risposta.
purtroppo ci avevo provato, ma alllora in compilazione va anche peggio...
GestioneDati.java [36:1] unreported exception
java.lang.ClassNotFoundException; must be caught or declared to be thrown
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
             ^
GestioneDati.java [37:1] unreported exception java.sql.SQLException; must be
caught or declared to be thrown
        Connection con = DriverManager.getConnection(url, "", "");
                                      ^
GestioneDati.java [39:1] unreported exception java.sql.SQLException; must be
caught or declared to be thrown
                Statement stmt = con.createStatement();
                                    ^
GestioneDati.java [41:1] unreported exception java.sql.SQLException; must be
caught or declared to be thrown
        ResultSet rs = stmt.executeQuery(query);
                           ^
GestioneDati.java [42:1] unreported exception java.sql.SQLException; must be
caught or declared to be thrown
        while (rs.next()) {
                 ^
GestioneDati.java [43:1] unreported exception java.sql.SQLException; must be
caught or declared to be thrown
            String s = rs.getString("CD_DITTA");
                         ^
GestioneDati.java [45:1] unreported exception java.sql.SQLException; must be
caught or declared to be thrown
             String n = rs.getString("CD_ANALISI");
                          ^
7 errors
Errors compiling GestioneDati.

                                       
Devi inserire l'invocazione del metodo all'interno di un costrutto 
try/catch. In particolare quando vuoi utilizzare un metodo devi 
consultare la documentazione Javadoc e controllare che il metodo non 
abbia una clausola "throws".
Puoi guardare alla pagina:
http://java.sun.com/j2se/1.4.1/docs/api/index.html
Nel nostro caso troviamo:
public static Class forName(String className)
                      throws ClassNotFoundException
Proseguendo il tuo esempio potresti fare:
import java.sql.*
...
try
{
   // qui forName(...) ecc.
}
catch (ClassNotDoundException e)
{
   // qui gestione dell'eccezione ClassNotFoundException, ovvero
   // se non riesce a trovare la classe del driver JDBC
   System.out.println(e);
}
catch (SQLException e)
{
   // qui gestione dell'eccezione SQLException, ovvero quando
   // sto eseguendo interrogazione verso il data base
}
Gaetano Bigliardi


Devi inserire tutto il codice da Class.forName a getString in un blocco
try catch:
try{
    Class.forName....
    ..
} catch(Exception e) {
   Stystem.err.println(e);
}
(Ma tu scrivi anche su it.comp.as400?)
Ciao
Franco


si.
ciao e grazie.

grazie 1000!!!
appena ho un attimo ci provo .

              ^
E' sbagliato l'approccio :
public class esempio {
   public static void main(String [] arg) throws SQLException,
                                          ClassNotFoundException {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    System.out.println("Driver caricato");
    Connection connessione = DriverManager.getConnection("jdbc:odbc:db");
    System.out.println("database connesso");
    Statement stmt = connessione.createStatement();
    ResultSet rs = stmt.executeQuery("select etc");
    etc etc
    }
}
Hai stabilito il datasource nella fonte dati ODBC di Windows?
Ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it