Problemas ao acessar base de dados

9 respostas
S

Criei uma página jsp que inclui e mosra os dados em um bando de dados no mysql. Quando dou o select dá um erro dizando que meu driver não é adequado.
Estou usando o driver: mysql-connector-java-3.0.8-stable-bin Que está no /web-inf/lib e no tomcat_home/common/lib. O erro é:
No suitable driver
precisa criar um arquivo web.xml; com alguma configuração?
O código é o seguindo:

<%
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
Connection con = DriverManager.getConnection("jdbc:mysql:127.0.0.1:3306/bdjsp","root","");
Statement stm = con.createStatement();
%>

9 Respostas

massardi

No Suitable Driver = Náo é um driver apropriado.

tavez esta faltando vc colocar o jar do seu driver no classpath, ou tente pegar o J/Connector que fica na própia pagina do fabricante clicando: http://www.mysql.com/downloads/api-jdbc-stable.html.

Até mais,
Leonardo Massardi.

wbsouza

da ultima vez que baixei o driver do mysql ele vinha em um arquivo ele vinha compactado em um zip ou tar.gz

Vc deve descompactar e copiar o arquivo arquivo mysql-connector-java-3.0.8-stable-bin.jar para o diretorio $CATALINA_HOME/commons/lib.

Dica: Evite fazer conexões a toda vez que houver uma solicitação do JSP/Servlet, utilize um Pool de Conexões. No tomcat já vem um. Para configurá-lo altere o arquivo $CATALINA_HOME/conf/server.xml adicionando as suas configurações. Segue abaixo um exemplo de Conexão com o Pool

<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
   ...
   <DefaultContext>
      <Resource name="jdbc/StrutsDemoDS" auth="Container" type="javax.sql.DataSource" scope="Shareable"/>
         <ResourceParams name="jdbc/StrutsDemoDS">
         <parameter><name>factory</name><value>org.apache.commons.dbcp.BasicDataSourceFactory</value></parameter>
         <parameter><name>driverClassName</name><value>com.mysql.jdbc.Driver</value></parameter>
         <parameter><name>url</name><value>jdbc:mysql://localhost/strutsdemo</value></parameter>
         <parameter><name>username</name><value>root</value></parameter>
         <parameter><name>password</name><value>root</value></parameter>
         <parameter><name>maxActive</name><value>20</value></parameter>
         <parameter><name>maxIdle</name><value>10</value></parameter>
         <parameter><name>maxWait</name><value>100</value></parameter>
      </ResourceParams>
   </DefaultContext>
   ...
</Host>

Vai aí um exemplo de como obter uma conexão do banco e carregar os registros em uma coleção. Esta coleção deverá ser setada na sessao do usuário(atraves de uma servlet que chama esta classe para retornar uma colecao de usuarios), e no JSP vc pegar este objeto, navegar na coleção e exibi-los no JSP, ou seja, nada de acesso a banco via JSP.

Estamos entendidos?

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DBDemo {
    
	private static DataSource dataSource = null;
	
	public Connection getConnection() throws NamingException, SQLException {
		Connection conn = null;
		if (dataSource == null) {
			try {
				InitialContext ic = new InitialContext();
				dataSource = (DataSource) ic.lookup("java:comp/env/jdbc/StrutsDemoDS");
			} catch (NamingException ex) {
				System.out.println(ex.getMessage());
				throw ex;
			}
		}
		if (dataSource != null) {
			conn = dataSource.getConnection();
		}
		return conn;
	}
    
	protected void closeConnection(Connection conn, PreparedStatement stmt, ResultSet rs) {
		if (rs != null) try { rs.close(); } catch (SQLException e) {}
		if (stmt != null) try { stmt.close(); } catch (SQLException e) {}
		if (conn != null) try { conn.close(); } catch (SQLException e) {}
	}
    
	public List getUsers() throws SQLException {
		Connection conn = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		List users  = new ArrayList();
		try {
			conn = getConnection();
			stmt = conn.prepareStatement("select * from usuario");
			rs = stmt.executeQuery();
			while (rs.next()) {
				UserData user = new UserData();
				user.setIdUsuario(rs.getInt("id_usuario"));
				user.setNome(rs.getString("nome"));
				user.setLogin(rs.getString("login"));
				user.setSenha(rs.getString("senha"));
				users.add(user);
			}
		}
		catch (SQLException e) {
			throw e;
		}
		finally {
			closeConnection(conn, stmt, rs);
		}
		return users;
	}
}

[]s, Welington B. Souza

S

Também concordo que acesso por jsp não é muito bom. É bem melhor usar bens pra isso, mas o web.xml está tirando meu sono ha semanas e não consigo configura-lo corretamente, então vi que já estáva ficando cansativo no forum e desisti de usá-los por enquanto. Por isso resolvi desenvolver tudo em jsp. Meu problema é o web.xml.

wbsouza

Dê uma olhada neste material http://jacques.dsc.ufpb.br/cursos/j2ee/html.zip

que ele vai te responder um monte de dúvidas.

[]s, Welington B. Souza

S

Cara, o link tá com pau! Está apontando pro lugar errado. :frowning:

caiofilipini

Não tá não, acabei de baixar o arquivo aqui. :wink:

S

Verdade, está funcionando sim! :oops: Valeu pela força! :smiley:

S

:smiley: VAleu pela força galera! :smiley:
Estou enviando este post só pra dar um feedback pro pessaoal, pois consegui acessar a base de dadds! Quem quiser saber como é só postar uma mensagem que eu digo! Até mais! :stuck_out_tongue:

wbsouza

Finalmente! :smiley:

Parabéns pela persistência.

Mas lembre-se, procure se embasar através da leitura de material técnico primeiro antes de tentar implementar algum software, assim vc conseguirá melhores resultados.

[]s, Welington B. Souza

Criado 23 de setembro de 2003
Ultima resposta 26 de set. de 2003
Respostas 9
Participantes 4