style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Conexión con mysql desde jsp

Buenas tardes,

Agradecería me puedan ayudar con un problema que tengo.
Les cuento, estoy intentando conectar con una base de datos en MySql, el problema es que me arroja un error de driver "com.mysql.jdbc.Driver" ya intente varias cosas, entre ellas crear una clase con el método main para hacer la misma conexión que deceo hacer y con esta clase si funciona, me trae los datos que solicito sin problema, pero cunado lo intento hacer desde un Servlet me manda el error que les comento, quiero creer que ademas de agregar el .jar de mysql-connector-java-5.1.14-bin necesito otra cosa pero no se cual es.

Código de la clase

import datos.*;
import java.sql.*;
public class Comprobador {
        public Comprobador(){
               
        }
        public static void main(String[] args){
                try{
                        DBManager dbManager = new DBManager();
                        dbManager.connect();
                        PreparedStatement sentencia = dbManager.createSentence("select * from tabla");
                        ResultSet filas = dbManager.query(sentencia);
                        String nomComputer;
                        if(filas != null){
                                System.out.println("filas tiene algo");
                        }
                        else{
                                System.out.println("filas esta vacio");
                        }
                        try{
                                while(filas.next()){
                                        nomComputer = filas.getString("name");
                                        System.out.println(nomComputer);
                                }
                        }
                        catch(SQLException e){
                                System.out.println(e.getMessage());
                        }      
                }
                catch(Exception e){
                        System.out.println(e.getMessage());
                }                      
        }
}

El servlet tiene el mismo código, la clase DBManager crea la conexión con los siguientes métodos:

public void connect() throws Exception {
                // Colocar el codigo para conectar al SMBD
                try {
                        Class.forName(driver).newInstance();// Registro del driver
                } catch (ClassNotFoundException e) {
                        throw new Exception("Error de driver: " + e.getMessage());
                }
                try {
                        cnn = DriverManager.getConnection(url, user, password);
                } catch (SQLException e) {
                        throw new Exception("Error de coneccion /n Codigo: "
                                        + e.getErrorCode() + "/n Causa: " + e.getMessage());
                }
        }

        public int update(PreparedStatement sentencia) throws Exception {
                try {
                        int res = sentencia.executeUpdate();
                        return res;
                } catch (SQLException e) {
                        throw new Exception(
                                        "Error al ejecutar sentencia en la Base de Datos:/nCodigo:"
                                                        + e.getErrorCode() + "/nCausa: "
                                                        + e.getMessage());
                }
        }

        public ResultSet query(PreparedStatement sentencia) throws Exception {
                try {
                        ResultSet filasDB = sentencia.executeQuery();
                        return filasDB;
                } catch (SQLException e) {
                        throw new Exception("Error al ejecutar la sencia: "
                                        + e.getMessage());
                }
        }

        public PreparedStatement createSentence(String sql) throws Exception {
                try {
                        PreparedStatement sentencia = cnn.prepareStatement(sql);
                        return sentencia;
                } catch (SQLException e) {
                        throw new Exception("Error de sentencia /Codigo: "
                                        + e.getErrorCode() + "/nCausa: " + e.getMessage());
                }
        }

De antemano muchas gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

RTFS

RTFS. No especificas qué error o excepción obtienes; puede ser de ClassNotFound o de conexión denegada o de URL inválido o problema de autenticación, etc.

Problemas con classpath o classloader

Sería bueno que muestres cuál es el error o excepción que te envía tu programa. Probablemente sea cuestión de que no se encuentra el .jar con el driver en el lugar indicado, puede estar repetido o hacer falta. ¿En qué servidor estas probando tu aplicación?
Supongo que esto es para algún proyecto escolar. Como nota te comento que es poco recomendable realizar las conexiones a base de datos desde los archivos jsp.

Imagen de francisco.santiagoj

ClassNotFound

Gracias por sus respuestas,

Les comento que la excepción que arroja es ClassNotFoundException esta la "cacho" y por el momento únicamente muestro el mensaje que obtengo con e.getMessage.

El .jar lo tengo en la carpeta src de mi proyecto en eclipse, después realice lo siguiente:
Clic derecho en el proyecto.
selecciono Build Path
Configure Buil Path
En libreries agregar jar externos.

Y agrego el .jar del conector.

Después en Order and export selecciono el .jar que acabo de agregar.

Estoy usando GlassFish, y no estoy creando los objetos directamente en los JSP, lo estoy haciendo en un servler en donde voy a crea un ArrayList para guardar los datos de un tipo objeto, y enviare el array list como parámetro al jsp con  request.setAttribute("name",miArray).

¿alguna idea?

Problemas con classpath

Para que el classloader (cargador de clases del servidor web o servidor de aplicaciones) pueda tener acceso a los archivos jar, estos deben ubicarse ya sea en la carpeta lib del servidor o en la carpeta lib de la aplicación web.
Es mas sencillo configurarlo el .jar dentro de tu proyecto, por lo que te sugiero lo hagas de esta manera.
Supongo que estas generando un archivo .war que subes al Glassfish.
En tu archivo war debe estar contenida la carpeta WEB-INF, dentro de la cual encontrarás la carpeta "classes" y la carpeta "lib" (puede haber mas).
La carpeta classes contiene los archivos compilados de tu aplicación, mientras que en lib deberás encontrar todas las bibliotecas (jars externos) que utiliza tu aplicación. Verifica que el jar del driver se encuentre allí.

Imagen de hectordc

Ejemplo conexion java - mysql

public static synchronized Connection getConnection()
throws SQLException
{
if (driver == null)
{
try

{
JDBC_DRIVER = "com.mysql.jdbc.Driver";
JDBC_URL = "jdbc:mysql://localhost/SCRUMMANAGER?user=root&password=123456";
JDBC_USER = "root";
JDBC_PASSWORD = "123456";

// oracle
Class jdbcDriverClass = Class.forName( JDBC_DRIVER );
driver = (Driver) jdbcDriverClass.newInstance();
DriverManager.registerDriver( driver );
}
catch (Exception e)
{
System.out.println( "Failed to initialise JDBC driver" );
e.printStackTrace();
}
}

return DriverManager.getConnection(
JDBC_URL,
JDBC_USER,
JDBC_PASSWORD
);
}

Imagen de francisco.santiagoj

@Neko Pui Gracias!!

Realice lo que me comentaste y funciono!!, borre los .jar que tenia en src y lo copie en la carpeta NombredelProyecto\WebContent\WEB-INF\lib de mi proyecto. también borre la libreria de Configure Buil Path. Todo esto lo hice locamente en mi computadora y Eclipse, exporte el proyecto a un .war lo monte en mi servidor de GlassFish y también funciono.

@hectordc, gracias por el ejemplo.

Nuevamente, muchas gracias.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">