PDA

Visualizza la versione completa : [java]connessione a DB


sapore di mare
04-10-2003, 22:43
Ciao, sto tentando di creare un semplice programmino che si connetta ad un database access db1.mdb e mi prenda dalla tabella Tabella1 il campo "nome".
Ho editato il seguente codice:

--------------------INIZIO CODICE

import java.sql.*;

public class DB {

public static void main (String args []) {
String url = "jdbc:odbc:db1";
Connection con;
String query = "SELECT nome" + "FROM Tabella1";
Statement stmt;

try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}

catch (ClassNotFoundException e) {
System.out.println("ClassNotFoundException: ");
System.err.println(e.getMessage());
}

try {
con = DriverManager.getConnection(url, "", "");
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()) {
String nom = rs.getString(2);
System.out.println("Nome = "+nom);
System.out.println("\n");
}
stmt.close();
con.close();
}
catch (SQLException ex) {
System.err.print("SQLException: ");
System.err.print(ex.getMessage());
}
}
}

---------------- FINE CODICE

Ho compilato e non mi ha dato nessun errore, però quando lancio il programma con il comando java, invece di funzionare mi viene fuori il seguente errore:


------------ERRORE
SQLException: [Microsoft][Driver Manager ODBC] Nome origine dati non trovato e driver predefinito non specificato.
--------------------

Forse ho mancato di specificare qualcosa????
Io uso un sistema operativo XP!!

Grazie anticipatamente a chi vorrà darmi una mano!!!!!!!!

Ciao ciao, aspetto vostre notizie!
:ciauz:

Sergio Pedone
05-10-2003, 01:51
Origine dati non definita.
Prova a configurare il DSN relativo al tuo db tramite il pannello origine dati del tuo sistema operativo.

:ciauz:

Angelo1974
05-10-2003, 11:37
Ciao.
Come ha detto Sergio non hai configurato il pannello origine dati quindi andando ad usare l'ODBC non si riesce a trovare il database da te creato, e cioè db1.mdb.
Per ovviare a ciò hai due scelte:

1) Configuri l'ODBC e cioè pannello di controllo -> strumenti di amministrazione -> origine dati ( o qualcosa di simile ) -> inserisci il tuo db.
2) Considerare un URL di questo tipo ( e secondo me è la scelta migliore ):
supponiamo che il db1.mdb sia in c:\documenti\database.

String url = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=c:\\documenti\\database\\db1.mdb";

( Non finirò mai di ringraziare chi, su questo forum, mi ha mostrato questa tecnica :p )
Come vedi ciò ti eviterà di andare a modificare l'ODBC e, secondo me, è molto utile nel caso in cui dovresti dare a clienti la tua applicazione Java.
Spero ti sia di aiuto.... ciao
:ciauz:

Sergio Pedone
05-10-2003, 19:57
Originariamente inviato da Angelo1974

[...]
2) Considerare un URL di questo tipo ( e secondo me è la scelta migliore ):
supponiamo che il db1.mdb sia in c:\documenti\database.

String url = "jdbc:odbc:;DRIVER=Microsoft Access Driver (*.mdb);DBQ=c:\\documenti\\database\\db1.mdb";
[...]

DSN-less !!!

sapore di mare
06-10-2003, 14:57
Grazie infinite ragazzi!!! Non sapevo si dovesse configurare il DSN!!!
Adesso vado a sistemare la situazione e spero funzioni!!! Poi vi faccio sapere!! :)

Grazie ancora!!!!!
ciaooo
:ciauz:

sapore di mare
06-10-2003, 22:35
Eccomi di nuovo!!!!!!!
Ho apportato la modifica suggerita e adesso non mi da più quell'errore ma me ne da un altro, dice "indice del desrittore non valido".............che vuol dire???? :bhò:

Qualcuno potrebbe scrivermi un breve esempio che prelevi il contenuto del campo nome nella tabella Tabella1 di un databese db1.mdb????? Cosi capisco come funziona questa connessione ai database!!!

Grazie infinite!
ciao ciao :ciauz:

sapore di mare
06-10-2003, 22:37
ops ho sbagliato a scrivere :) l'errore è:

INDICE DEL DESCRITTORE NON VALIDO

daniele_dll
06-10-2003, 23:06
scusa 1 domandina...

ma invece di usare access che fa pena...xche nn usi sqlite...che è moltooooooo + efficente?

http://www.cwinters.com/News/show/?news_id=931
http://www.ch-werner.de/javasqlite/
http://weblogs.java.net/pub/wlg/306
http://www.sqlite.org

:)

devo dire che è veloce quasi quanto mysql ^___^
anche se svolge un lavoro molto + ridotto rispetto a mysql :)

sapore di mare
07-10-2003, 12:33
Si potrei usare anche quello, ma questa prova che sto facendo deve girare con access!!! per forza!!

Un codice breve che faccia una connessione come descritto prima, si può reperire??????? Mi basterebbe vederne uno per rendermi conto dove sbaglio.......

Datemi una mano!!!!! :smack:

Grazie!!!
ciao :ciauz:

ChReAn
07-10-2003, 12:49
Sicuro di aver creato il dsn correttamente e averlo chiamato db1?

Loading