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

JAVA y SqlServer

Estas en el tema de JAVA y SqlServer en el foro de Java en Foros del Web. hola ! tengo un proyecto en java con su modelo de datos para una base de datos SQlServer. Desde el modelo de datos java abro ...
  #1 (permalink)  
Antiguo 08/11/2005, 07:59
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 20 años
Puntos: 1
JAVA y SqlServer

hola !

tengo un proyecto en java con su modelo de datos para una base de datos SQlServer. Desde el modelo de datos java abro una única conexion a las base que usaré durante todo el programa. Utilizaré esa conexión para llamar a los procedimientos almacenados de SqlServer.

Pues bien, el problema que tengo es q me va muy lento a la hora de llamar a los Procedimientos almacenados y que me devuelvan datos, El problema no está en los Proc. Alm. puesto que desde SqlServer van muy rápido.

Alguien ha tenido algún problema con jdbc ?? que le fuera lento??

Gracias de antemano.

pd: alguien sabe de un buen modelo de datos ?

Última edición por ferblaca; 08/11/2005 a las 08:07
  #2 (permalink)  
Antiguo 08/11/2005, 10:21
 
Fecha de Ingreso: agosto-2005
Mensajes: 95
Antigüedad: 18 años, 8 meses
Puntos: 0
Podrias mostrar la forma como haces para llamar a los procedimientos almacenados.
  #3 (permalink)  
Antiguo 09/11/2005, 12:34
Avatar de goncafa  
Fecha de Ingreso: julio-2002
Ubicación: Santiago
Mensajes: 1.211
Antigüedad: 21 años, 10 meses
Puntos: 10
Debe ser pq no esta susando un driver JDBC nativo y usas un puente JDBC:ODBC o no?

Saludos
__________________
se despide hasta la proxima
Gonzalo Castillo
  #4 (permalink)  
Antiguo 16/11/2005, 01:29
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 20 años
Puntos: 1
Os muestro mas informacion:

Para el modelo de datos he hecho lo siguiente:
He creado un lógica de Negocio y otra de Datos. La lógica de Negocio se encarga de capturar errores que pueden haber al llamar a las funciones de la Lógica de datos. La lógica de datos se encarga de meter los parámetros que se le pasan por función en los procediminetos almacenados. La clase de la lógica de datos será una clase estática implementada con patrón singleton, es decir, q durante la ejecución del programa solo podrá haber un objeto de la lógica de datos, así nos aseguramos que no hagamos varias conexiones a la base de datos y solo haya una. Os pongo un poco de código:

Lógica Datos __________________________________________________ __
public class LDatos_genesys {

private static LDatos_genesys Ldatos;
private Connection con=null;
private String url="";
private String usr="";
private String pwd="";

static public LDatos_genesys getLDatos_genesys() throws Exception {
if (Ldatos==null)
Ldatos = new LDatos_genesys();

return Ldatos;
}


public void Conectar()
throws SQLException, ClassNotFoundException {
//cargar controlador de sql Server
Class.forName("com.microsoft.jdbc.sqlserver.SQLSer verDriver" );
//obtener la conexion
con = DriverManager.getConnection(url,usr,pwd);
}


public LDatos_genesys() {
try{ url="jdbc:microsoft:sqlserver://"+ConfInfo.BDNEGOCIO_HOST+":"+ConfInfo.BDNEGOCIO_P ORT+";DatabaseName="+ConfInfo.BDNEGOCIO_NAME;
usr=ConfInfo.BDNEGOCIO_USER;
pwd=ConfInfo.BDNEGOCIO_PWD;
Conectar();
}catch(Exception e){
}
}

...........//ejemplo de llamada por procedimiento almacenado

public ResultSet consultar_Agenda(String codigo,String Isla)throws SQLException, ClassNotFoundException{
if (!Conectado()) Conectar();

CallableStatement pa=null;
pa=con.prepareCall("{call consultar_Agenda(?,?) }");

pa.setString(1,codigo);
pa.setString(2,Isla);

return pa.executeQuery();
}

..........
}




Logica Negocio _______________________________________________

public class LNegocio_genesys {

private LDatos_genesys LD;
private Logger log;
private int res;

/** Creates a new instance of LNegocio */
public LNegocio_genesys() {
try{
LD = LDatos_genesys.getLDatos_genesys();
}catch(Exception e){}
}


...........//llamada a la funcion de Logica de datos. Devuelve un resulSet que ya lo trato en el programa para sacar valores.

public ResultSet consultar_Agenda(String codigo,String isla) throws SQLException, ClassNotFoundException{
return LD.consultar_Agenda(codigo, isla);
}
..........
}



__________________________________________________ __________

Respecto al controlador que utilizo es el nativo: Class.forName("com.microsoft.jdbc.sqlserver.SQLSer verDriver" );
no¿?¿??¿?

Podría ser problemas de red ??? el caso es q cuando van muchas consultas seguidas una de otra, la primera tarda pero las siguientes las hace rapidísimas, es como si la primera creara la conexión con la base de datos y las demás ya tuvieran ese trabajo hecho. Lo extraño es q cuando creo el objeto de la Logica de datos ya creo la conexión con la base de datos, es decir, q cuando se ejecuta la primera consulta a la BD ya no tendría pq hacer la conexión. En definitiva no se cual puede ser el motivo ... pero es q me tarda casi 10 segundos en ejecutar la primera consulta y eso es excesivo. Podría ser una mala configuración del Sql Server ???? problemas de red ??? y si pongo un timeout a la conexion de un tiempo elevado ??? como podría hacer eso, desde la cadena de conexión o desde el Sql Server ???? ;)

bueno, muxas gracias. saludos

Última edición por ferblaca; 17/11/2005 a las 01:49
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:10.