Newsgroup: it.comp.java
Titolo: #JDBC HELP

Dobbiamo utilizzare Java per accedere ad un database di Access. Abbiamo
testato alcuni driver jdbc ma non otteniamo risultati.
Il seguente listato in esecuzione genera questa eccezione: "[Microsoft][ODBC
DriverManager]Data source name not found and no default driver specified".
import java.applet.*;
import java.awt.*;
import java.sql.*;
import com.ms.jdbc.odbc.*;
public class PROGETTO extends Applet {
...
public static void main(String args[]) {
...
try {
Class.forName("com.ms.jdbc.odbc.JdbcOdbcDriver");
DriverManager.setLogStream(System.out);
String url = "jdbc:odbc:Nostra_banca_dati";
Connection con = DriverManager.getConnection(url);
}
catch (Exception e){
System.out.println(e.getMessage());
}
...
La schermata con i messagi DOS è la seguente:
DriverManager.getConnection("jdbc:odbc:Nostra_banca_dati")
      trying
driver[className=com.ms.jdbc.odbc.JdbcOdbcDriver,context=null,com.ms.jdbc.od
bc.JdbcOdbcDriver@b1]
*Driver.connect (jdbc:odbc:Nostra_banca_dati)
JDBC to ODBC Bridge: Checking security
No SecurityManager present, assuming trusted application/applet
JDBC to ODBC Bridge 1.2001
Current Date/Time: Web Mar 25 16:15:19 GTM+01:00 1998
Loading.MSJDBC10 library
Allocating Environment handle (SQLAllocEnv)
hDbc=86837612
Allocating Connecting handle (SQLAllocConnect)
hDbc=886837740
Connecting (SQLDriverConnect), hDbc=86837740,
szConnStrIn=DSN=Nostra_banca_dati;UID=;PWD=
RECTCODE = -1
ERROR - Generating SQLException...
SQLException: SQLException(IM002) vendor code(0)
java.sql.SQLException [Microsoft][ODBC Driver Manager] Data source name not
found and no default driver specified
                    at com/ms/jdbc/odbc/JdbcOdbc.createSQLException
                    at com/ms/jdbc/odbc/JdbcOdbc.standardError
                    at com/ms/jdbc/odbc/JdbcOdbc.SQLDriverConnect
                    at com/ms/jdbc/odbc/JdbcOdbcConnection. initialize
                    at com/ms/jdbc/odbc/JdbcOdbcDriver.connect
                    at java/sql/DriverManager.getConnection
                    at java/sql/DriverManager.getConnection
                    at PROGETTO.init
                    at PROGETTO.main
Closing connection (SQLFreeConnect), hDbc=86837740
Closing environment (SQLFreeEnv), hEnv=86837612
getConnection failed: java.sql.SQLException:[Microsoft][ODBC Driver Manager]
Data source name non found and not default driver specified
[Microsoft][ODBC Driver Manager] Data source name non found and not default
driver specified
Connection.finalize com.ms.jdbc.JdbcOdbcConnection@13a
*Connection.close
Teniamo a precisare che il nostro data base è stato creato senza limitazioni
di password o di gruppi di lavoro, tuttavia abbiamo anche provato
l'istruzione:
Connection con = DriverManager.getConnection(url, "dba", "sql");
ma non è cambiato nulla.
Abbiamo provato anche inserendo alcune istruzioni del tipo:
        Statement stmt = con.createStatement();
        String select = "Select [Processo fisico] from [Processi fisici]";
        ResultSet rs = stmt.executeQuery(select);
        while (rs.next()){
        principale_dialog1.stringaFisico = rs.getString("Processo fisico");
naturalmente senza ottenere risultati.
Abbiamo provato il ponte JDBC-ODBC della SUN con la seguente eccesione:
"sun\jdbc\odbc\JdbcOdbcDriver".
Abbiamo provato un'altro driver otteniamo l'eccezione:
"com\imaginary\sql\iMsqlDriver".
Abbiamo fatto molti tentativi, senza sapere perchè, nel posizionare le
librerie jdbc in diverse directory, senza risultati.
Abbiamo provato sia con il database dentro la stessa directory dei file del
programma, sia in altre directory (e siamo sicuri del nome e del
funzionamento del database), sempre senza risultati.
Abbiamo usato il programma sopattutto come standaloene perchè sappiamo che
possono esserci problemi di sicurezza dovuti all'uso di file in linguaggi
nativi non pienamente compatibili con Java.
Stiamo lavorando con la versione Visual J++ 1.1 Developer Studio di
Microsoft e le librerie di Explorer 4.0; inoltre abbiamo provato anche ad
usare la versione JDK 1.1 facendo attenzione alle compatibilità tra versioni
vecchie e nuove e tra versione Sun e Microsoft. Pur avendo fatto decine di
altre prove non siamo ancora riusciti ad accedere al data base.
Siamo oramai bloccati con questo problema da più di un mese,Vi saremmo grati
se vorrete aiutarci a risolvere il nostro problema.
Vi preghiamo inoltre di essere il più prolissi possibile, poichè non vorremo
risolvere il problema senza capire quale diavolo è la causa dei nostri guai.
Grazie.

dei nostri guai.
    L'eccezione e' la stessa che compariva ad Alberto Faver 
fa...@enet.it
(messaggio in it.comp.java) che mi ha risposto ringraziandomi per l'utile
suggerimento e quindi penso che sia riuscito a risolvere il problema ;-)
    Premetto che fino ad ora ho utilizzato il JDBC solo con applicazioni
Java (non applets) e sempre su una macchina singola (mai in rete).
    di solito l'eccezione compare se non si e' definito il database con
il nome corretto nell'"User Data Source" nell'"OBDC Data Source
Administrator". Mi spiego meglio: supponendo che utilizziate Windows95 e'
sufficiente
1) cliccare sul pulsante "Avvio" o "Start" della barra delle applicazioni
2) selezionare la voce "Impostazioni"
3) a questo punto compare un elenco tra cui "Pannello di controllo"
4) aperta la finestra compaiono tutte le icone che servono per le varie
impostazioni. Tra queste dovrebbe essercene una che si chiama "32bit ODBC"
(sul mio sistema c'e' e non ho Access installato, quindi dovrebbe essere un
componente standard). E' anche presente una icona "ODBC", ma mi sembra di
ricordare che usando quella non si risolve il problema.
4) dopo aver cliccato su "32bit ODBC" compare la dialog dell'"ODBC Data
Source Administrator"
5) A questo punto si usa il pulsante "Add..." dell'"User DNS" (per capire e'
sufficiente avere la dialog davanti), si sceglie "Microsoft Access Driver
(*.mdb)" si inserisce "Nostra_banca_dati" nel "Data Source Name" e si usa il
pulsante "Select..." per collegare il nome al file reale del database.
6) Ora il database e' disponibile utilizzando:
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  Connection DBConnection =
    DriverManager.getConnection("jdbc:odbc:Nostra_banca_dati")
  ;//...
Queste sono le operazioni da eseguire e spero vi possano essere utili. Se le
avete gia' impostate correttamente ed il programma non funziona ancora,
non so cosa consigliarvi.
Ciao.
--
     o     Leonardo Boselli   
bos...@technologist.com
    o o    TETRACTYS Software 
tetr...@geocities.com
   o o o          Java and NetRexx Tutorials
  o o o o        
http://tetractys.home.ml.org