JDBC com SQL Server 2005

7 respostas
L

Estou tendo problemas com um servlet com acesso a um base SQL Server 2005. Para isso, estou usando o Tomcat 4.1 (como um serviço) em Windows XP, e o Eclipse 3.0 como ambiente de desenvolvimento.

Quando a aplicação tenta instanciar o driver
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);

ocorre o erro:
java.lang.ClassNotFoundException: com/microsoft/sqlserver/jdbc/SQLServerDriver

Sei que este erro está associado ao CLASSPATH, mas fiz tudo que li a respeito (obviamente faltou alguma coisa… por isso peço a ajuda de vocês)

Eis aqui o que foi feito:

Baixei o driver JDBC da Microsoft (http://msdn.microsoft.com/data/jdbc/default.aspx)
e copiei o arquivo sqljdbc.jar para o diretório
%CATALINA_HOME%/common/lib

Alterei o autoexec.bat, para incluir o .jar na variavel CLASSPATH, mas sei que para o Tomcat isso não adianta, pois ele não lê a variável do sistema. A minha dúvida é como então atualizar o CLASSPATH para o Tomcat ?

Como é Win XP, criei o CLASSPATH também via
<Painel de Controle/Sistema/Avançado/Variáveis do Sistema>, mas sem efeito.

No diretório bin do Tomcat existe o script setclasspath.bat, que aparentemente deve ser chamado quando o tomcat é iniciado. Alterei esse script, mas sem efeito.

Copiei o sqljdbc.jar também para os diretórios :
%CATALINA_HOME%/shared/lib e /WEB-INF/lib da minha aplicação mas também sem efeito.

Obrigado,
Luis Arthur

7 Respostas

_fs

Coloque a biblioteca dentro de WEB-INF/lib.
E no Eclipse vá em propriedades de seu projeto -> java build path -> libraries [aba] -> add external jars
E adicione também ali.

ps.: o driver JTDS é melhor que o da microsoft:
http://jtds.sourceforge.net
benchmark:
http://jtds.sourceforge.net/benchTest.html

L

O driver da jTDS funcionou de primeira !

e sem precisar mexer em nada no CLASSPATH… somente adicionando no projeto e copiando o jar para o diretório certo, como vc falou.

Com o driver da MS, ou o procedimento que fiz no Eclipse não foi o certo (não me lembro se adicionei como ‘external jars’) ou ele não funciona mesmo :stuck_out_tongue:

Obrigado,
Luis Arthur

Leozin

larthur até onde eu sei você esqueceu de por mais 2 jars na pasta, quando o SQL Server pede os arquivos pro classpath, ele pede 3 jars (o do driver, naoseioqueutils e um outro mongo lah)

esse jTDS rula :wink: só pra avisa

insuportavel

bom dia, estou tentando usar o driver jTDS para conexaoe estou recebendo uns erros.

gostaria de saber se é desta forma que se deve escrever o código:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
 	private static final String URL = "jdbc:jtds:sqlserver://servidor/base";
 	private static final String DRIVER = "net.sourceforge.jtds.jdbc.Driver";
 	private static final String USUARIO = "sa";
 	private static final String SENHA = "";
 	
	public static Connection getConnection() throws SQLException{
		try{
			Class.forName(DRIVER);
			System.out.println("Conectando a Banco de Dados...");
			return DriverManager.getConnection(URL, USUARIO, SENHA);
		}catch (ClassNotFoundException e) {
			throw new SQLException (e.getMessage());
		}		
	}
}

obrigado

T

private static final String URL = “jdbc:jtds:sqlserver://servidor/base”;

conecta-se à instância default do SQL Server. Se precisar conectar-se a outra instância, use:

private static final String URL = “jdbc:jtds:sqlserver://servidor/base;instance=instancia”;

Exemplo: se servidor=MeuSQL, base=NorthWind e instancia=SQL2, use

private static final String URL = “jdbc:jtds:sqlserver://MeuSQL/NorthWind;instance=SQL2”;

http://jtds.sourceforge.net/faq.html#instanceName

instance Named instance to connect to. SQL Server can run multiple so-called "named instances" (i.e. different server instances, running on different TCP ports) on the same machine. When using Microsoft tools, selecting one of these instances is made by using "<host_name>\<instance_name>" instead of the usual "<host_name>". With jTDS you will have to split the two and use the instance name as a property.
insuportavel

u fiz desta forma olha só:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {
 	private static final String URL = "jdbc:jtds:sqlserver://dmndiacelsql:1433/QBDADOS";
 	private static final String DRIVER = "net.sourceforge.jtds.jdbc.Driver";
 	private static final String USUARIO = "meuUsuario";
 	private static final String SENHA = "minhaSenha#";
 	
	public static Connection getConnection() throws SQLException{
		try{
			Class.forName(DRIVER);
			System.out.println("Conectando a Banco de Dados...");
			return DriverManager.getConnection(URL, USUARIO, SENHA);
		}catch (ClassNotFoundException e) {
			throw new SQLException (e.getMessage());
		}		
	}
}
D

Olá, estou tendo problema pra me conectar ao SQL server usando:
jdbc:jtds:sqlserver://localhost:1433/db
net.sourceforge.jtds.jdbc.Driver

ta dando pau de IOException. alguem tem alguma ideia?

Criado 11 de abril de 2006
Ultima resposta 23 de fev. de 2007
Respostas 7
Participantes 6