Newsgroup: it.comp.java
Titolo: jsp mdb

Salve a tutti,
ho problemi con la seguente jsp
------------------------
<html>
<head>
<title>Sondaggio</title>
</head>
<body>
<font face="verdana" color="#3300ff" size="2">
<%@ page language="java" import="java.sql.*" %>
<% 
    Connection conn = null;
    //carica il file di classe del driver 
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
    //crea la connessione con l'origine dati
    java.sql.Connection c =
DriverManager.getConnection("jdbc:odbc:;DRIVER=Microsoft Access Driver
(*.mdb);DBQ=esempiojsp.mdb;");
    //crea lo statement
    java.sql.Statement st = c.createStatement();
    java.sql.ResultSet rs = st.executeQuery("select * from
Nominativi");
    if (!rs.next())
    {  
	out.println("-");			
    }//if 
    st.close();
    conn.close();
 %>
<br><br>
</font>
</body>
</html>
------------------------
Tomcat mi dice
Internal Servlet Error:
javax.servlet.ServletException: No suitable driver
	at org.apache.jasper.runtime.PageContextImpl.handlePageException
...ecc...ecc...
Mi sebra di capire dalla scritta "No suitable driver" che non è
disponibile il driver di MS ACCESS, o sbaglio?
E se al posto di un db mdb volessi usare un db sql server? cosa
cambierebbe nel codice della jsp?
GRAZIE A TUTTI COLORO CHE MI RISPONDERANNO
CIAO

 CIAO
Non ho mai utilizzato codice simile al tuo, quindi ti posto il mio nel caso
tu voglia provare a fare delle modifiche:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection conn=DriverManager.getConnection("jdbc:odbc:nomeDatabase");
Statement stmt = conn.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM xxx'");
Dove nomeDatabase č il nome che hai dato, nel pannello Amministrazione
origine dati ODBC, al database.

...

TI RINGRAZIO PER LA TUA RISPOSTA, MA IO INTENDEVO UNA CONNESSIONE
DIRETTA AL DB ACCESS CIOE' UNA CONNESSIONE DSN-LESS COME SI DICE IN
GERGO. IN ALTRE PAROLE AL POSTO DEL DSN METTERE IL PERCORSO ASSOLUTO
DEL DB SUL SERVER.
IN ASP CI SONO RIUSCITO, MA IN JSP TOMCAT MI SEGNALA L'ERRORE DI CUI
DICEVO.FORSE PERCHE' SBAGLIO IL DRIVER?
MI SAI AIUTARE?
GRAZIE
BYE

 BYE
non mi risulta esistano driver per collegarsi direttamente ad access da
java, per lo meno non free
credo che l'unico sistema sia quello che ti ha suggerito db1981, cioè via
ODBC

(*.mdb);DBQ=esempiojsp.mdb;");
[CUT]
Non mi intendo di JSP, ma IMHO dovresti mettere il path completo del 
file mdb.
Inoltre se fai una ricerca sui messaggi passati, trovi che una forma 
che si è rivelata funzionare è quella postata da tityrus il 10/01/2002: 
confronta.
HTH
-- 
Ciao
	Fabrizio C.

...

GRAZIE DB1981 E FOLIX-8,
MA MI DITE COME FACCIO A CONNETTERMI AD UN DATABASE MS ACCESS (O DI
QUALSIASI ALTRO TIPO) RESIDENTE FISICAMENTE SU DI UN SERVER NON LOCALE
(IL SERVER E' TIPO FREE-HOSTING) IN MODO DIRETTO SENZA DSN?
PER INTENDERCI SE USO UN SERVER LOCALE QUALE APACHE CON IL SUPPORTO
TOMCAT CON IL METODO DSN CONSIGLIATO DA DB1981 TUTTO FUNZIONA.
SE PERO', COME DICEVO, VOGLIO FARE LA STESSA COSA SUL SERVER REMOTO
SUL QUALE OVVIAMENTE NON HO LA POSSIBILITA' DI CREARE IL DSN, COME
FACCIO SE NON COLLEGANODMI DIRETTAMENTE AL DB?
IN ASP MI SONO COLLEGATO AD UN DB IN MODO DIRETTO E SIA LA PAGINA ASP
SIA IL DB ACCESS RISIEDONO SU UN SERVER REMOTO DI TIPO FREE-HOSTING.
LA CONNESSIONE DIRETTA IN ASP L'HO CREATA IN QUESTO MODO
oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" &
Server.MapPath("esempioasp.mdb"))
DEVE PUR ESISTERE UN METODO ANALOGO IN JSP PER COLLEGARSI DIRETTAMENTE
AL DB (DI QUALSIASI TIPO ESSO SIA) SENZA DSN. CHE DITE?
MI AIUTATE? 
GRAZIE ANCORA

MI AIUTATE? 
Solo se la smetti di urlare!
In caso non lo sapessi, è molto scorretto (e reca fastidio) scrivere 
tutto in maiuscolo.
-- 
Ciao
	Fabrizio C.

effettivamente (non lo sapevo assolutamente) esiste quel sistema DSN-LESS di
cui parlavi , e seguendo le indicazioni di fabrizio camera, che mi avevano
incuriosito , ho trovato questo indirizzo
http://www.rgagnon.com/javadetails/java-0345.html
fra l'altro si tratta di un sito molto interessante , specialmente la
sezione howto, e comunque quello che ho trovato è questo
It is possible to connect to a database without a User or System DSN. This
is useful if you don't have easy access to a client registry to define the
required DSN. Not all JDBC driver support this feature. // For Access
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String myDB =
"jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=C:/data/month.MDB";
DBConn = DriverManager.getConnection(myDB,"","");
// For Excel
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String myDB = "jdbc:odbc:Driver={Microsoft Excel Driver
(*.xls)};DBQ=c:/data/month.xls;DriverID=22;READONLY=false"
DriverManager.getConnection(myDB,"","");
Thanks to R. Hibberd for the tip.
non l'ho provato ma mi riprometto di farlo il prima possibile.
mi sembra leggermente diverso dal tuo codice , vedi un po cosa puoi fare , e
se funziona avverti ;-)
ciao
P.S. mi associo sul non gridare, è faticoso da leggere.

...

Scusate l'urlo e il maiuscolo, sono un pò un neofita dei gruppi (mi è
scappata la ricerca di "dsn-less"). Fino ad ora ho cercato sempre
aiuto in me stesso e sui tutorial (brutta cosa), ma comprendo solo ora
l'utilità di it.comp.java e di altri gruppi analoghi. Insomma,
confronto costruttivo, senza urli e caps log attivi... :)... messaggio
ricevuto.
Ritornando alla jsp che riporto
---------------------------------------------
<html>
<head>
<title>Esempio jsp mdb</title>
</head>
<body>
<%@ page language="java" import="java.sql.*" %>
<%= "x" %>
<%
  		    out.print("y");
		    // definisco la stringa di connessione diretta al db
		    String url = "jdbc:odbc:;DRIVER=Microsoft Access Driver
(*.mdb);DBQ=esempiojsp.mdb";
		    // carico il file di classe del driver
		    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		    // stabilisco la connessione
		    Connection con = DriverManager.getConnection(url, "", "");
		    //crea lo statement
		    java.sql.Statement st = con.createStatement();
		    java.sql.ResultSet rs = st.executeQuery("select * from
Nominativi");
		    while (rs.next())
		    {
			    for(int col=1; col<=rs.getMetaData().getColumnCount();col++)
			    {
				    out.print(rs.getString(col)+" , ");
			    }
		    }
		    out.print("\n");
 %>
</body>
</html>
-------------------------------------------
ho provato con innumerevoli path in DBQ=... , ma niente da fare. Mi
visualizza solo la x iniziale di debug e poi tutto bianco senza
segnalazioni di errori da parte di tomcat.
Lo stesso codice in una classe java funzia, ma in versione jsp non ne
vuol sapere.
Continuo da solo, e se qualcuno vuol farmi sapere qualcosa..grazie :)

ho provato con innumerevoli path in DBQ=... , ma niente da fare.
[CUT]
Ma hai provato il più sensato, quello *completo*?


...

Ci ho provato con il path completo, ma niente da fare.
Ci ho provato anche con altri path, ma ancora nulla.
E dire che in asp con ms access 2k con server win2k gira tutto che è
un piacere con un path del tipo "./nomecartellaxyz/nomedb.mdb".
Frolix-8, mi dicevi che ci provavi, ci sei riuscito?
Beh, se non vi ho stufato troppo, a risentirci e ... grazie ancora