TomCat+JDBC - Nao salva e dá erro!

Colegas, é o meu 1º sistema para Web e tô apanhando

Seguinte : TOMCAT habilitado, mysql_conector na Lib
quando rodo o seguinte código ele não grava no banco e mostra o erro abaixo :

	public String grava(SocioNetBean socio) throws SQLException{
		try {
			Class.forName(util.DRIVER);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			System.out.println("ERRO no Driver ");
			mensagem = "deu erro";			
		}
		con = (Connection) DriverManager.getConnection(util.CONEXAO);

		try{
    		stmt = con.prepareStatement("INSERT into socio(Nome,Endereco,Telefone,Valor,Empresa) values (?,?,?,?,?)");
	    	stmt.setString(1, socio.get_nome());
	    	stmt.setString(2,socio.get_endereco());
	    	stmt.setString(3, socio.get_telefone());
	    	stmt.setDouble(4, socio.get_valor());
	    	stmt.setString(5, socio.get_empsoc());
	    	stmt.executeQuery();
	    	mensagem = "gravou";
		} catch (SQLException e){
			System.out.println("ERRO: no banco ");
			mensagem = "deu erro";
		} finally {
			stmt.close();
			con.close();
			return mensagem;
		}
	}

[b]
A variavel DRIVER é : public static final String DRIVER = “com.mysql.jdbc.Driver”;

A variável CONEXAO é : public static final String CONEXAO = “jdbc:mysql://192.168.1.1/synos,root,senha_secreta”;
[/b]

[i]
ERRO no Driver
java.sql.SQLException: No suitable driver found for jdbc:mysql://192.168.1.1/synos,root,senha_secreta
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.sindieletro.dao.Banco.grava(Banco.java:46)

[/i]

O que estou fazendo de errado ?

tenta montar a string de conexão assim:

jdbc:mysql://ip-servidor:3306/nome do banco

depois faz isso

getConnection(url, usuario, senha)

desculpa cara, ja que deu ClassNotFound acho que ele não ta achando o driver no classpath…

Coloca o driver do MySQL no seu classpath…

é um .jar, deve estar na pasta web-inf/lib do seu sistema.

Mas o connector tá lá no Libraries : mysql-connector-java-5.0.7-bin.jar

Coloquei o Nº da porta 3306 mas o erro continuou. :cry:

Abaixo estou listando o restante da descricao do erro


salvarjava.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1362)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.sindieletro.dao.Banco.grava(Banco.java:40)

Outra coisa : Eu tenho uma classe chamada TESTE_CONEXAO, nela eu rodo através de Java Aplication e ela conecta com o banco normalmente e me mostra o resultado numa boa.
Estou tendo problemas realmente é quando rodo utilizando TOMCAT.

Muito obrigado pela ajuda :cry:

Tô tomando um coro :frowning: :frowning: :frowning:

Ainda não consegui !!! :frowning: :cry: :frowning: :cry: :frowning:

oi, o ClassNotFound é porque o Tomcat não está achando o .jar, colocando deste ireto em WEB-INF/lib da aplicação deveria funcionar, caso não funcione verifique como está configurado o seu tomcat, olhe a variável CATALINA_HOME, etc…

André coloquei o mysql-connector-java-5.0.7 no lib do WEB-INF mas continuou com a mesma mensagem :CLASSNOTFOUND

Como se configura lá no TOMCAT ?
Como a configuração tem que ficar ?

Obrigado

5X0 para o TOMCAT/J2EE :oops:

Vimieiro

Cheque (ou configure) as seguintes variáveis de ambiente (no caso para o windows)

JAVA_HOME = c:\java\jd51.5.0 CATALINA_HOME = c:\tomcat5.5 CLASSPATH = .;%JAVA_HOME%\lib;%CATALINA_HOME%\lib PATH = %JAVA_HOME%\bin;%CATALINA_HOME%\bin

O problema deve ser esse…

Abs

André, brigadão mais uma vez.
vou tentar aqui.

Coloque a lib do mysql em LOCAL_INSTALACAO_TOMCAT\common\lib

Acho que ira funcionar.

Amigo Ramilani

Fiz o que me falou :

O erro modificou (acho que estou quase) !!!

Mas ele indica que NÃO tenho permissão no Banco, eu agora não estou entendendo pois sou administrador do BANCO e utilizo o BANCO diariamente aqui :

INFO: Server startup in 891 ms salvarjava.sql.SQLException: Access denied for user ''@'192.168.1.2' (using password: NO) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:885) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3421) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1247) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748)

Uma pergunta : este erro, quem está mandando é o MySQL ou o TOMCAT ? Se for o MySQL, tá danado pois é o usuário/senha que utilizo em minhas aplicações VB6 !

5X2 para o TOMCAT/J2EE hehehe

vc ta usando ? [quote]getConnection(url, usuario, senha) [/quote] ou apenas [quote]getConnection(url)[/quote]

[quote=vimieiro]Amigo Ramilani

Fiz o que me falou :

O erro modificou (acho que estou quase) !!!

Mas ele indica que NÃO tenho permissão no Banco, eu agora não estou entendendo pois sou administrador do BANCO e utilizo o BANCO diariamente aqui :

INFO: Server startup in 891 ms salvarjava.sql.SQLException: Access denied for user ''@'192.168.1.2' (using password: NO) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:885) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3421) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1247) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748)

Uma pergunta : este erro, quem está mandando é o MySQL ou o TOMCAT ? Se for o MySQL, tá danado pois é o usuário/senha que utilizo em minhas aplicações VB6 !

5X2 para o TOMCAT/J2EE hehehe

[/quote]

Este erro acontece porque vc está tentanto criar uma Connection sem usar um password… não tem nada com o MySQL…

Amigos, vejam meu código :

	public String grava(SocioNetBean socio) throws SQLException{
		try {
			Class.forName(util.DRIVER);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			System.out.println("ERRO no Driver ");
			mensagem = "deu erro";			
		}
		con = (Connection) DriverManager.getConnection(util.CONEXAO_SOCIO);

		try{
    		stmt = con.prepareStatement("INSERT into socio(Nome,Endereco,Telefone,Valor,Empresa) values (?,?,?,?,?)");
	    	stmt.setString(1, socio.get_nome());
	    	stmt.setString(2,socio.get_endereco());
	    	stmt.setString(3, socio.get_telefone());
	    	stmt.setDouble(4, socio.get_valor());
	    	stmt.setString(5, socio.get_empsoc());
	    	stmt.executeQuery();
	    	mensagem = "gravou";
// ********************************************			
		} catch (SQLException e){
			System.out.println("ERRO: no banco ");
			mensagem = "deu erro";
		} finally {
			stmt.close();
			con.close();
			return mensagem;
		}

Sendo que util.DRIVER e util.CONEXAO_SOCIO eu pego de uma classe UTIL :

	 public static final String DRIVER = "com.mysql.jdbc.Driver";
	 public static final String CONEXAO_SOCIO = "jdbc:mysql://192.168.1.1/synos,root,senha_secreta";

salvarjava.sql.SQLException: Access denied for user ‘’@‘192.168.1.2’ (using password: NO)

“using password: NO”

EDITADO: desculpem, postei uma resposta na mensagem errada

Obrigado amigo GAUSS.

Eu sei ler !!! Sei que ele está me mostrando que Password está null !!!

Mas, se vc observar a minha última mensagem, eu estou passando TODA a conexão através da CONSTANTE CONEXAO_SOCIOS

Utilizo este usuário/senha em TODOS meus sistemas instalados aqui (VB6 X MySQL)

Gostaria de saber se tem outra configuração no TOMCAT para poder acessar o MySQL !!!

Lembrando que eu tenho uma classe para teste de conexão com o banco, ela utiliza a mesma CONSTANTE, rodo ela sem utilizar o TOMCAT e ela conecta normalmente e me tras os resultados numa boa !

Outra vez, muito obrigado

Colegas, consegui resolver :

A instrução Conection NAO ACEITA a conexao passada toda :

con = (Connection) DriverManager.getConnection(util.CONEXAO_SOCIO);

Tem que ser passada em partes : Conexao+ usuario + senha

con = (Connection) DriverManager.getConnection(util.CONEXAO_SOCIO,util.USUARIO,util.PASSWORD);

Assim a constante CONEXAO_SOCIO tem que ter apenas :

"jdbc:mysql://192.168.1.1/synos";

Muitissimo obrigado a todos

[quote=vimieiro]Colegas, consegui resolver :

A instrução Conection NAO ACEITA a conexao passada toda :

con = (Connection) DriverManager.getConnection(util.CONEXAO_SOCIO);

Tem que ser passada em partes : Conexao+ usuario + senha

con = (Connection) DriverManager.getConnection(util.CONEXAO_SOCIO,util.USUARIO,util.PASSWORD);

Assim a constante CONEXAO_SOCIO tem que ter apenas :

"jdbc:mysql://192.168.1.1/synos";

Muitissimo obrigado a todos[/quote]

vimieiro, foi exatamente isso o que eu te perguntei na mensagem anterior e te aconselhei a fazer…

bom se deu certo então blz… 8)