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??
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.
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!!
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.
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.
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.
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:
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]?