String de conexão com access do JSP?

Como faço para conectar-me ao access utilizando o jsp, estava tentando desta meneira:

<%
import java.sql.;
import java.io.
;
import javax.swing.*;

public class normalizacao_B1
{
public static void main(String args[])
{
String url = “jdbc:odbc:JSP”;
try
{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection conn = DriverManager.getConnection(url);
System.out.println(“Conexao efetuada com sucesso !!!”);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“SELECT * FROM Cadastro.MDB”);
}
}
}
%>

Estou tentando usar a mesma idía dos programinhas em java que fiz assim que cheguei aqui, teria alguma difernça??? como seria o jeito certo de conectar-me a um banco de dados??

Um abraço a todos!!

Olá,

Algumas considerações, em jsp voc~e não vai utilizar o método main como em aplicacoes Desktop. A maneira de importar as classe também é diferente:
Outra coisa não é recomendável acessar banco de dados via .jsp mas de qualquer forma lá vai:

<%@ page import=“java.sql.*” %>

<%

String url = “jdbc:odbc:JSP”;
try
{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection conn = DriverManager.getConnection(url);
System.out.println(“Conexao efetuada com sucesso !!!”);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“SELECT * FROM <NomedaTabel no o Banco de Dados”);
}catch(ClassNotFoundException cnfe){out.println(cnfe);}
catch (SQLException sqle){out.println(sqle);}

%>

Não testei código pode ser que tenha digitado algo incorretamente.

Ps: Procure referencias sobre Pool de Conexões

[]s

Porque que não é recomendado acessar banco de dados via .jsp??, qual seria a recomendação que você faria???

Agora, coloquei o código abaixo!!

<%@ page import=“java.sql.*” %>

<%

String url = “jdbc:odbc:JSP”;

try 
{ 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
Connection conn = DriverManager.getConnection(url); 
System.out.println("Conexao efetuada com sucesso !!!"); 
Statement stmt = conn.createStatement(); 
ResultSet rs = stmt.executeQuery("SELECT * FROM Cadastro"); 
}
catch(ClassNotFoundException cnfe)
{
out.println(cnfe);
} 
catch (SQLException sqle)
{
out.println(sqle);
} 

%>

esta dando o erro java.sql.SQLException: No suitable driver !!

Muito obrigado!!

Não é recomendado deixar muito código no seu JSP. Por exemplo, acessar o um banco de dados. Eles ficam relativamente lentos. Essa não é a função dele. JSPs foram criados para apresentar os dados para o usuário e não processarem um monte de códigos.
Para esse tipo de tarefa (conexão com o bd por exemplo) é aconselhável utilizar componentes. O BD está na mesma máquina que sua aplicação?

Desculpe, nesse código que você mandou… No ODBC, você tem um DSN com esse nome? “JSP”? Ele aponta corretamente para o seu banco (no caso o seu arquivo MDB)?

Sim tenho, ele está apontando para o nome do meu Banco de Dadod chamado, Cadastro.mdb. O engraçado é que eu mudei o código para ser compilado em desktop e ele funcionou, o que pode ser??

Fiz assím e compilei!!!

import java.sql.*;

public class teste
{
public static void main(String args[])
{
String url = “jdbc:odbc:jsp”;

	try 
        		{

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection conn = DriverManager.getConnection(url);
System.out.println(“Conexao efetuada com sucesso !!!”);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(“SELECT * FROM Cadastro”);
}
catch (Exception e)
{
System.out.println("Erro no comando de Conexao!<br>
" + e.toString());
}
}
}

funionou, agora porque que quando tranfiro para o jsp ele não funiona!!

este é o código!!
<%@ page import=“java.sql.*” %>

<%

String url = “jdbc:odbc:JSP”;

try 
{ 
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
Connection conn = DriverManager.getConnection(url); 
System.out.println("Conexao efetuada com sucesso !!!"); 
Statement stmt = conn.createStatement(); 
ResultSet rs = stmt.executeQuery("SELECT * FROM Cadastro"); 
}
catch(ClassNotFoundException cnfe)
{
out.println(cnfe);
} 
catch (SQLException sqle)
{
out.println(sqle);
} 

%>

continua dando o erro java.sql.SQLException: No suitable driver !!

E agora!!

Esse erro… não tem um driver.

Testei os dois códigos na minha máquina. Funcionaram sem problemas.
Qual a versão do Tomcat e do JDK que você está usando?

O jdk é o j2sdk1.4.1, a pasta que ele criou está com este nome e o tamcat é o Apache Tomcat 4.0!!!

Se não serve qual devo utilizar?

Normal, deveria ter funcionado…
Engraçado que para a aplicação está funcionando, para o JSP não. Tudo está na mesma máquina correto?

Tem como mandar o seu CLASSPATH e PATH? O SO é win ou Linux?

darta
voce PRECISA colocar o .jar do conector com odbc dentro do lib do web-inf da sua aplicacao.
nao adianta voce colcoar no classpath, o tomcat nao vai dar a variavel classpath para a sua webapp!

Paulo,
Não fiz nenhum configuração adicional no Tomcat. Não coloquei nada no lib… e funcionou.
Ambiente:
Conectiva Linux 8 e Windows 2000 Server com JDK 1.4.0 e Tomcat 4.1.12

Por quê?
O JDK fornece o driver de banco de dados de ponte Jdbc para Odbc a fim de permitir que qualquer programa Java acesse qualquer fonte de dados Odbc. O driver é definido pela classe JdbcOdbcDriver do pacote sun.jdbc.odbc.
Se o JDK fornece esse drive nativamente e o Tomcat faz uso do JDK, então este último deveria reconhecer automaticamente o driver e interpretar corretamente o arquivo .jsp (digo isso porque joguei o arquivo .jsp no Tomcat que acabei de descompactar e funcionou)… ponto.
O que você falou sobre o conector está perfeito, mas acho não se aplica ao driver da Sun que faz a ponte Jdbc-Odbc pois este, é nativo do JDK. Me corrija se estiver errado, mas ele só precisaria realizar essa operação - colocar o driver Jdbc ou conector do Banco de Dados no lib da aplicação - se o driver não fosse nativo do JDK. Por exemplo se ele quisesse trabalhar com MySQL. Aí teria razão colocar o driver no lib.

Por favor, mais uma vez, se escrevi alguma besteira me corrija.

[]s

nao sabia que o driver odbc agora vinha no rt.jar

se eh assim, ta certo!

Paulo,
Faz um tempo já que essa classe é nativa no JDK (desde a versão 1.1.6).
Ela fica dentro do mesmo pacote (sun.jdbc.odbc).
Nas versões antigas, em vez do rt.jar, o arquivo se chamava classes.zip (parecido com o driver da Oracle, mas não é).
Lá dentro tinha a classe JdbcOdbcDriver.

[]s

Meu SO é Windows 2000 Server, eu não fiz nenhuma configuração no CLASSPATH E PATH, será que pode ser isso?? se sim o que devo acrescentar??

Bingo!
No PATH você adiciona o caminho do seu JAVA_HOME/bin e no CLASSPATH… acesse esse site e veja:
http://www.guj.com.br/servlet/guj?PARSE=true&MAMUTE_ACTION=br.com.guj.action.ListArticle&MAMUTE_TEMPLATE=ShowArticle&LIST_ARTICLE=single&ArticleId=8&PAGE=1

[]s

Diogo tá difícil, fiz os seguintes acréscimos no classpath e path:

CLASSPATH
.;C:Program FilesSQLLIBjavadb2java.zip;C:Program FilesSQLLIBjava
untime.zip;C:Program FilesSQLLIBin[color=“red”];SET CLASSPATH=.;%JAVA_HOME%[/color]

PATH
C:IBM ConnectorsEncinain;;%SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem;C:PROGRA~1IBMIMNNQ;C:Program FilesSQLLIBBIN;C:Program FilesSQLLIBSAMPLESREPL;C:Program FilesSQLLIBHELP;C:PROGRA~1IBMCLIENT~1;C:PROGRA~1IBMCLIENT~1Shared;C:PROGRA~1IBMCLIENT~1Emulator;;C:PDSSSYSTEM;C:PDSSHELP;C:PROGRA~1ULTRAE~1;C:Program FilesSybaseSQL Anywhere 7win32;C:Program FilesSymantecpcAnywhere[color=“red”];SET JAVA_HOME=c:j2sdk1.4.1;SET PATH=%PATH%;%JAVA_HOME%in[/color]

não funcionou!!
continua dando o erro java.sql.SQLException: No suitable driver
Ah, como faz para colocar as barras aqui!??

Darta,
Não é para você colocar o comando SET no PATH ou CLASSPATH! Você tem que colocar só o caminho. O PATH indicará ao sistema operacional onde procurar o programa quando este for chamado.
Se você digitar ‘javac’ fora da pasta bin do JDK ele provavelmente irá dar um erro dizendo que esse programa não é reconhecido. Seria interessante ter uma referência para a pasta ‘bin’ dentro da pasta onde foi instalado o JDK no seu PATH.

Exemplo: o meu j2sdk está instalado na seguinte pasta:

d:j2sdk1.4.0

dentro desse diretório tem uma pasta bin. Onde tem os executáveis do JDK. No PATH você tem que colocar uma referência a essa pasta. Exemplo:

PATH
d:j2sdk1.4.0in

NÃO TIRE NADA DO PATH QUE VOCÊ NÃO CONHEÇA!!
É só para você incluir o tracho acima no fim do seu PATH (de acordo com os seus diretórios de instalação).

Quanto ao CLASSPATH, leia novamente o tutorial que te mandei… está muito bem explicado. Você vai entender.
Mas primeiro resolva o problema do PATH.

[]s

Diogo, o problema é que eu já li várias vezes o tutorial, mas não estou entendendo até onde meu classpath deve ser apontado, ou seja, eu estou com o j2sdk1.4.1, instalado no C.

C:j2sdk1.4.1

abaixo dele tenho os diretários

Bin;
demo;
include
jre;
lib

minha dúvida no classpath é seu devo apontar para o diretorio j2sdk1.4.1.

Se para ele eu acrescentei … .;C:j2sdk1.4.1 no classpath já no path fiz o que você falou acrescentei o … ;C:j2sdk1.4.1in

mas não adiantou nada…?

meus arquivos .jsp estão no diretório webappexamplesdarta, dentro do tomcat e eu estou acessando assim:

http://localhost:8080/examples/darta/Cadastro.jsp

Pelo desktop funciona tudo!! Não é possível que isso seja tão complicado assim, to começando achar que sou muito burro mesmo!!!rs…

rs… Eu sei, eu sei. Outra coisa, você não é burro!!
Simplesmente está vendo uma coisa nova e que não conhece. É normal estar perdido, ninguém nasceu sabendo!

Vamos lá…
No CLASSPATH, você edita da mesma forma que o PATH e coloca:

[color=“red”]D:\j2sdk140\jre\lib\rt.jar[/color]

!!! Lembrando que: o caminho tem ser de acordo com a SUA instalação do JDK!!!

Depois de incluir o trecho acima, inclua um ‘;’ no fim de todo o CLASSPATH, e em seguida um ‘.’.

Tente isso…

Detalhe: Antes de tentar isso. Você definiu alguma variável de ambiente com o nome de [color=“red”]JAVA_HOME[/color]?

[]s

Não, não defini nenhuma variável com JAVA_HOME!!

vou fazer as modificações e vou dar um boot na minha máquina… aguarde!!!