Newsgroup: it.comp.java
Titolo: Aiuto SQL

Perchè questo codice viene compilato e poi in esecuzione con Forte4Java non
eseguito? (In DSN utente l'origine è MSAccess)
Grazie
pMB
www.proghettolab.it
// file EsempioJDBC.java
import java.sql.*;
public class EsempioJDBC {
    public static void main(String args[]) {
        try {
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        } catch (ClassNotFoundException e) {
            System.out.println(e.toString());
            System.out.println("Il driver non può essere caricato.");
            System.exit(1);
        }
        try {
            Connection conn =
DriverManager.getConnection("jdbc:odbc:impiegati","","");
            Statement stmt = conn.createStatement();
            ResultSet rs= stmt.executeQuery("SELECT nomi FROM impiegati");
            while(rs.next()) {
                System.out.println(rs.getString("nome"));
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            System.out.println(se.getMessage());
            se.printStackTrace(System.out);
            System.exit(1);
        }
    }
}
Gli errori sono:
java.lang.NoClassDefFoundError: VRML/Java_EAI/EsempioJDBC (wrong name:
EsempioJDBC)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:493)
        at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:111)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
Exception in thread "main"

Ah, dimenticavo ... uso "per forza" la JavaVM e non la Java(sun) perchè solo
con quella posso interfacciare i mondi virtuali in VRML con Java.

Ho cambiato il nome del file e quindi della classe in EsempioDB.java però
ritorna:
[Microsoft][Driver Manager ODBC] Nome origine dati non trovato e driver
predefinito non specificato.
java.sql.SQLException: [Microsoft][Driver Manager ODBC] Nome origine dati
non trovato e driver predefinito non specificato.
        at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6031)
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:6188)
        at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:2458)
        at
sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:320)
        at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:163)
        at java.sql.DriverManager.getConnection(DriverManager.java:517)
        at java.sql.DriverManager.getConnection(DriverManager.java:177)
        at VRML.Java_EAI.EsempioDB.main(EsempioDB.java:23)

L'errore che ti spara fuori è abbastanza indicativo.
Risolvi il problema creando una risorsa ODBC col nome che usi nel codice
("impiegati") e associando a quel nome il DB Access (forse impiegati.mdb).
Controlla bene la stringa passata al DriverManager....credo di ricordare che
basta "impegati".
I hope this helps.
    Dan.

 wrote in message
aracvi$lfe$1...@fata.cs.interbusiness.it...


 Dov'è l'errore?
Molto strano.....
L'unica cosa che mi viene in mente è che la query sia sbagliata!
Prova a controllare che nel DB esista una tabella "impiegati" con un campo
"nomi".
I db solitamente non sono case sensitive quindi la querycome l'hai scritta
tu dovrebbe essere corretta.
Ah, un'altra cosa: per correttezza il campo dovrebbe chiamarsi "nome" e non
"nomi".
