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

Tengo una clase que se conecta a un BD.. pero ..

Estas en el tema de Tengo una clase que se conecta a un BD.. pero .. en el foro de Java en Foros del Web. Tengo una clase que se conecta a un BD.. pero .. cuando lo uso con un jsp, me da error EL JSP ES <%@ page ...
  #1 (permalink)  
Antiguo 13/12/2004, 10:09
 
Fecha de Ingreso: septiembre-2003
Mensajes: 37
Antigüedad: 20 años, 7 meses
Puntos: 1
Tengo una clase que se conecta a un BD.. pero ..

Tengo una clase que se conecta a un BD.. pero .. cuando lo uso con un jsp, me da error
EL JSP ES

<%@ page language="java" import="java.sql.*,java.io.*,java.util.*,pkfactura .*" %>

<jsp:useBean id="book" class="pkfactura.books" />
<html>
<body>
<%
book.connect();
out.print("Hola nuevo mundo");
book.disconnect();

%>
</body>
</html>

LA CLASE ES ..

package pkfactura;
/*
* books.java
*
* Created on 11 de diciembre de 2004, 05:30 PM
*/


import java.sql.*;
import java.util.*;
import java.io.File;
import java.util.Date;
/**
*
* @author Administrador
*/
public class books {
String error;
Connection conn;
//String bd = "prueba"; //si te fijas aca va la base de datos que entraremos
//String login = "root"; //aca colocas el usuario que entrara
//String password = "root"; //como es obvio dice pass , colocas la pass que usaste en la cd cuando le diste el permiso al usuario y asignaste la pass
//String url = "jdbc:mysql://localhost/" + bd;

/** Creates a new instance of books */
public books() {
}
public void connect () throws ClassNotFoundException, SQLException,Exception{
try {
/*Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@say mon:1521:oracle","system","system"); */
Class.forName("com.mysql.jdbc.Driver").newInstance ();
//conn = DriverManager.getConnection(url,login,password);
conn = DriverManager.getConnection("jdbc:mysql://localhost/prueba","root","root");

// Class.forName("oracle.jdbc.driver.OracleDriver");
// conn = DriverManager.getConnection("jdbc:oracle:thin:@plu ton:1521:ORCL9I","system","manager");

}
catch(ClassNotFoundException e){
error="No se puede locxalizar el controlador.";
throw new ClassNotFoundException(error);
}
catch(SQLException e){
error="Imposible establecer la conexion on BD";
throw new SQLException(error);
}
catch(Exception e){
error="Hubo un error inseperado.";
throw new Exception(error);

}
}

public void disconnect () throws SQLException{
try{
if (conn != null){
conn.close();
}
}
catch(SQLException e){
error = "Impòsible cerrar la conexion";
throw new SQLException(error);
}
}
public ResultSet viewbooks()throws SQLException, Exception {
ResultSet rs=null;
try{
String sql="select * from book";
Statement stmt= conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLException e){
error="No se puede ejecutar la consulta";
}
catch(Exception e){
error="Hubo un error";
throw new Exception(error);
}
return rs;
}

public void addbook(int id, String title, int price,int cid)throws SQLException,Exception{
if (conn != null ){
try{
PreparedStatement updatebook;
updatebook=conn.prepareStatement("insert into book value(?,?,?,?)");
updatebook.setInt(1,id);
updatebook.setString(2,title);
updatebook.setInt(3,price);
updatebook.setInt(4,cid);
updatebook.execute();


}catch(SQLException e){
error="Hubo un error SQL";
throw new SQLException(error);
}
}else{
error="se perdio lña conexion a la bd.";
throw new Exception(error);
}

}
public void removebook (String [] pkeys)throws SQLException, Exception{
if (conn != null ){
try{
PreparedStatement ps= conn.prepareStatement("delete * from book where id=?");
for(int i=0; i<pkeys.length;i++){
ps.setInt(1, Integer.parseInt(pkeys[i]));
ps.execute();
}
}catch(SQLException e){
error="Hubo un sql exceptiln";
throw new SQLException(error);
}catch(Exception e){
error="se produjo un error";
throw new Exception(error);
}
}else{
error="se ha perdido la conexion con la bd.";
throw new Exception(error);
}

}
}





Y EL ERROR ES ....


type Informe de Excepción

mensaje

descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.

excepción

javax.servlet.ServletException: Imposible establecer la conexion on BD
org.apache.jasper.runtime.PageContextImpl.doHandle PageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.access$1 100(PageContextImpl.java:64)
org.apache.jasper.runtime.PageContextImpl$12.run(P ageContextImpl.java:745)
java.security.AccessController.doPrivileged(Native Method)
org.apache.jasper.runtime.PageContextImpl.handlePa geException(PageContextImpl.java:743)
org.apache.jsp.index_jsp._jspService(index_jsp.jav a:75)
org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
sun.reflect.GeneratedMethodAccessor65.invoke(Unkno wn Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
org.apache.catalina.security.SecurityUtil$1.run(Se curityUtil.java:239)
java.security.AccessController.doPrivileged(Native Method)

ETC ...
  #2 (permalink)  
Antiguo 13/12/2004, 23:36
Avatar de hugo777  
Fecha de Ingreso: enero-2002
Ubicación: Lima, Perú
Mensajes: 757
Antigüedad: 22 años, 3 meses
Puntos: 1
El mensaje de error es impreso desde el catch del SQLException.

Reviisando el codigo vemos que el SQLException puede ser lanzado por el objeto conexiòn que se usa en esa parte, por lo que es probale que el problema este con el usuario, password, o el nombre de la base de datos, o si el servidor esta disponible, etc, algo relacionado a la conexion.

Para ver mas detalle, imprime el mensaje, con un printStacjTrace para determinar el motivo y la linea exacta donde se produce.
__________________
Saludos,

H@C..
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 05:44.