Foros del Web » Programación para mayores de 30 ;) » Java »

Conectar a base de datos SQLServer desde JSP

Estas en el tema de Conectar a base de datos SQLServer desde JSP en el foro de Java en Foros del Web. Hola a todos, tengo un problema con la conexion a la base de datos SQLServer desde un programa JSP, lo que hago es lo siguiente: ...
  #1 (permalink)  
Antiguo 27/04/2006, 02:54
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 18 años, 3 meses
Puntos: 0
Exclamación Conectar a base de datos SQLServer desde JSP

Hola a todos, tengo un problema con la conexion a la base de datos SQLServer desde un programa JSP, lo que hago es lo siguiente:
Código:
ConexionBBDD c = new ConexionBBDD("user", "login", "url", "com.mysql.jdbc.Driver");

            try // Conectarse a la base de datos.
            {
                // Intentamos establecer la conexión.
                Class.forName(c.getDriver());

                conexion = DriverManager.getConnection(c.getUrl(), c.getLogin(), c.getPass());

                if (conexion != null) {
                        //Inserto en la bbdd
                }
             }catch(ClassNotFoundException e){

                }
Y siempre me salta en la linea de Class.forName a la excepcion ClassCastException, alguien sabe porque? estoy haciendo algo mal? espero pueda alguien ayudarme, muchas gracias, y un saludo.

P.D. user, login y url, son los que utilizo yo, así que ahi no esta el problema.

Última edición por kalandas; 27/04/2006 a las 03:38
  #2 (permalink)  
Antiguo 27/04/2006, 03:24
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Parece que el método getDriver() del el objeto c de la clase , no nativa , ConexionBBDD no te dá por ejemplo un string tal que "com.mysql.jdbc.Driver". ¿Has probado con c.getDriver().toString(); ? es solo una idea ... jejeje

Revisa ese método ... o vas al grano y pones

Class.forName("com.mysql.jdbc.Driver");
conexion = DriverManager.getConnection("jdbc:mysql://servidor/nombrebasedatos", "usuario", "laclave");
  #3 (permalink)  
Antiguo 27/04/2006, 03:38
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 18 años, 3 meses
Puntos: 0
Hola dogduck, ya he hecho lo que me has dicho, de poner directamente e nombre del Driver pero ese no era el problema, con c.getDriver me hacia lo mismo(es decir, me cogia bien el Driver). Al ponerlo directamente me sigue saltando a la excepcion ClassNotFoundException(y no a ClassCastException, que se me ha pirao y lo habia puesto mal en el primer post, ahora mismo lo edito, perdona), bueno muchas gracias por contestar, a ver si conseguimos que esto tire , ciao.
  #4 (permalink)  
Antiguo 27/04/2006, 03:41
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 4 meses
Puntos: 19
Por si te vale de algo : Un ejemplo


Código:
// http://club.idecnet.com/~ccastano/femepa/281105/281105.htm

import java.sql.*;

public class CreateCoffees {
    public static void main(String args[]) {
        //String url = "jdbc:mySubprotocol:myDataSource";
        String url = "jdbc:mysql://localhost/cafebasedatos"
        Connection con;
        String createString;
        createString = "create table COFFEES " +
                            "(COF_NAME VARCHAR(32), " +
                            "SUP_ID INTEGER, " +
                            "PRICE FLOAT, " +
                            "SALES INTEGER, " +
                            "TOTAL INTEGER)";
        Statement stmt;

        try { //Cargamos el driver
            Class.forName("com.mysql.jdbc.Driver");
        } catch(java.lang.ClassNotFoundException e) {
            System.err.print("ClassNotFoundException: ");
            System.err.println(e.getMessage());
        }

        try { //Establecemos la conexión
            //con = DriverManager.getConnection(url, "myLogin", "myPassword");
            con = DriverManager.getConnection(url, "root", "mysql");
            //Creamos el ststement
            stmt = con.createStatement();
            //Ejecuta una actualización: crear tablas , insertar , delete ,...
            stmt.executeUpdate(createString);
            stmt.close();
            con.close();
            // stmt.executeQuery() : consultas (select)
        } catch(SQLException ex) {
            System.err.println("SQLException: " + ex.getMessage());
        }
    }
}
  #5 (permalink)  
Antiguo 27/04/2006, 03:49
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 18 años, 3 meses
Puntos: 0
Si mi problema está en que es JSP, tengo el programa ya realizado en Java y funciona correctamente, hace consultas, inserta y modifica en bases de datos, pero necesito migrar esta aplicacion Java a JSP, y es ahi donde tengo problemas, porque haciendo la misma conexion siempre me salta la excepcion de ClassNotFounExcetio, y no se que hacer para que funcione en JSP. De todas formas gracias por el ejemplo, si a alguien se le ocurre algo mas, estoy abierto a todo tipo de sugerencias.
Un saludo.
  #6 (permalink)  
Antiguo 27/04/2006, 07:34
 
Fecha de Ingreso: marzo-2006
Mensajes: 61
Antigüedad: 18 años, 1 mes
Puntos: 0
Y porque no trabajas con Servlet y JSP, o tambien si quieres trabajar directamente en JSP, trabaja con JSTL, asi yo me conecto y hago mis consultas a la BD.

Esop

Patricio
  #7 (permalink)  
Antiguo 28/04/2006, 01:35
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 18 años, 3 meses
Puntos: 0
Hola, gracias por contestar.
JSTL???? que es? y podrías darme alguna directriz de como conectarme en tal caso?
De todas formas, si que estoy trabajando directamente sobre JSP, pero no se porque me salta siempre a la misma Excepcion, cada vez que hago el Class.ForName(NombreDriver).
Si me dices como hacerlo con JSTL, lo intento gustoso, mientras funcione, jeje, venga un saludo.
  #8 (permalink)  
Antiguo 28/04/2006, 04:23
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 18 años, 3 meses
Puntos: 0
Cambiando el driver de com.mysql.jdbc.Driver a sun.jdbc.odbc.JdbcOdbcDriver, consigo que pase la linea de Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); pero ahora la excepcion me la da en
Código:
conexion = DriverManager.getConnection(c.getUrl(), c.getLogin(), c.getPass());
y me dice :
Código:
java.sql.SQLException: No suitable driver
  #9 (permalink)  
Antiguo 28/04/2006, 08:09
 
Fecha de Ingreso: marzo-2006
Mensajes: 61
Antigüedad: 18 años, 1 mes
Puntos: 0
Cita:
Iniciado por kalandas
Hola, gracias por contestar.
JSTL???? que es? y podrías darme alguna directriz de como conectarme en tal caso?
De todas formas, si que estoy trabajando directamente sobre JSP, pero no se porque me salta siempre a la misma Excepcion, cada vez que hago el Class.ForName(NombreDriver).
Si me dices como hacerlo con JSTL, lo intento gustoso, mientras funcione, jeje, venga un saludo.
Bueno te explico:

JSTL es JSP Tag Lib, en la cual puedes colocar codigo java en tu pagina JSP o puedes hacer unos metodos que ejecuten cuando se carge la pagina, viste, entonces podrias colocar un metodo que te conecte a la BD o que te despliegue los resultados dependiendo del parametro de entrada.

Esop

Ahhh, estoy revisando tus Excepciones haber si encuentro algo

Patricio
  #10 (permalink)  
Antiguo 30/04/2006, 04:57
 
Fecha de Ingreso: enero-2006
Ubicación: Madrid
Mensajes: 148
Antigüedad: 18 años, 3 meses
Puntos: 0
Hola Saberwuld, muchas gracias por tu ayuda, pero por fin conseguí que funcionase, pensaba que los .jar para realizar la conexion a la base de datos, eran los mismos para java y para JSP, pero parece ser que no, por fin me di cuenta despues de darle muchas vueltas, me baje el correcto y ya funciona POR FIN!!! con la tonteria que era y lo que me ha costado, bueno suele pasar que sea una tonteria... pero hasta que te das cuenta, es lo que tiene no tener todavia mucha experiencia en JSP, pero es cuestion de ir cogiendola. Lo dicho, muchas gracias a todos los que me habeis ayudado.

Un saludo.

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:05.