Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > JAVA
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-03-2009
uper uper is offline
Miembro
 
Registrado: abr 2004
Posts: 289
Poder: 14
uper Va por buen camino
Como Abrir una conexion de manera global

buenas tardes, tengo instalado mysql y netbeans 6.5, lo que pretendo hacer con la conexion a la base de datos
es que sea de forma global como se hace comun en los lenguajes y de ahi poder realizar todas mis conexiones.

En los desarrollos con delphi o vb(creo un modulo.bas declaro el nombre de la conexion como public para despues
abrirla al cargarse en la forma principal y en cada forma solo me refiero a ella para mis operaciones como
conexion.Execute(sql) al terminar la cierro por completo)

es pocible hacer algo semejante.
por un lado tengo una clase TestConnection.java que es la conecion, despues tengo en una frame
coloco un boton, y ese boton tengo q instanciar a la clase para llamar a los objetos declarados, y realizar
las operaciones:

Código PHP:
 private void btnConectarActionPerformed(java.awt.event.ActionEvent evt) {
         
TestConnection conexion = new TestConnection();
         
conexion.conectar(); 
ahora que mejor que cuando se ejecute la forma se carge la conexion y se cierre hasta que termine el programa
lo hize.... pero ahora puse el codigo en un boton para hacer una operacion pero no se puede por que solo
funciona en el evenyo declarado, existe la forma de que pueda llamar desde cualquier lado mi objeto Coneccion

Código PHP:
private void formWindowOpened(java.awt.event.WindowEvent evt) {
        
TestConnection conexion = new TestConnection();
         
conexion.conectar();


este es codigo que realize y me da errores por que no encuentra a que conexion es ?
siendo que estan en declarados como public y claro es bajo la instancia si se encuentran
siempre y cuando esten en dicho evento, como puedo lograr esto ya que lo que no quiero es
ejecutar otra conecion al servidor ya que ya abri una y bajo esa siempre pueda trabajar:

Código PHP:
private void btnConectarActionPerformed(java.awt.event.ActionEvent evt) {

  
////TestConnection conexion = new TestConnection();  Si quito lo comenarios corre sin problemas
      
ResultSet rs;  //variable local
  ////conexion.conectar()
      
etiqueta.setText("Se ha establecido la Conexion " conexion.url);
      try {
      
rs=stm.executeQuery("select * from eq_categorias");
      while(
rs.next()){
       
System.out.println("Registro " rs.getString(1)+ " " rs.getString(2));
      }
      
conexion.conn.close();
      }
      catch(
SQLException ex) { System.out.println(ex); }

 }
    
        
//TestConnection .java

import java.sql.*;

public class 
TestConnection {
 public 
String url="jdbc:mysql://localhost/base";
 public 
Statement stm;
 public 
ResultSet rsgl;
 public 
Connection conn null;

 public 
void conectar(){
 try {
   Class.
forName("org.gjt.mm.mysql.Driver");
   
//Class.forName("com.mysql.jdbc.Driver).newInstance();
   
conn=DriverManager.getConnection(url,root,clave);
   if (
conn !=null) {
      
System.out.println("Coneccion a la base de datos");
      
stm=conn.createStatement();
      
//conn.close();
   
}
  }
 catch(
SQLException ex) { System.out.println(ex); }
   catch(
ClassNotFoundException ex)  { System.out.println(ex); }
 }
//fin deconectar


les agragesco si alguien me puede comentar como instanciar la clase como si dejeramos
publicamente.
gracias
Responder Con Cita
  #2  
Antiguo 07-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 19.978
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Si declaras la conexión dentro de un método, la referencia será visible sólo en ese método. Si declaras la variable como miembro de la clase de tu frame:

Código:
public class MainFrame extends JFrame
{
  private TestConnection conexion;

  ...
}
Puedes instanciar la clase en el constructor de MainFrame y la variable conexion será accesible desde cualquier método del frame.

// Saludos
Responder Con Cita
  #3  
Antiguo 12-03-2009
Avatar de Arcioneo
Arcioneo Arcioneo is offline
Miembro
 
Registrado: jul 2006
Ubicación: Tierra
Posts: 584
Poder: 11
Arcioneo Va por buen camino
dentro de la clase

Dentro de la clase donde haces la conexion, ves que hiciste un objeto Connection no? Pues haz un Getter de ese objeto y siempre sobre la instancia que tienes podrás llamarlo sin pedos
__________________
"Porque es tan idiotamente sorda la fé y tan ciego el que cree?".
Responder Con Cita
  #4  
Antiguo 14-03-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.647
Poder: 10
rgstuamigo Va por buen camino
Arrow

Lo mejor que veo es que tengas una clase adicional que se llame por ejemplo "Utilidades" (seria algo asi como un DataModule en Delphi donde puedas instanciarla desde cualquier parte del programa) en esta clase defines tus variables y/o objetos que vas a utilizar globalmente algo asi por ejemplo:

Código PHP:
package util;

public class 
Utilidades 
{  public static TestConection conexion;//aqui esta tu variable
    
public static final int CONECTAR=1;///de aqui para abajo otros ejemplos...
    
public static final int DESCONECTAR=2;
    public static final 
int CONTACTO=3;
    public static final 
int VER_CONTACTO=4;
    public static final 
int CORREO=5;
    public static final 
int VER_CORREO=6;
    public static final 
int CIVIL=7;
    public static final 
int MODIFICAR=8;
    public static final 
int INSERTAR=9;
    public static final 
int CAMBIO_PRODUCTO=11;
    
    public static final 
int LINEA=12;
    public static final 
int FAMILIA=13;
    public static final 
int UNIDAD_MEDIDA=14;
    public static final 
int MATERIAL=15;
    public static final 
int AGENCIA=16;
    public static final 
int COMPROBANTE=17;
    public static final 
int SECCION=18;
    public static final 
int PEDIDO=19;
    public static final 
int SALIR=20;

Una varaible declarada static puede ser vista o instanciada desde cualquier parte de una aplicacion.
No te olviddes de que java es un lenguaje 100% orientado a objetos, no es igual a otros lenguajes que son Hibridos como c,c++ o Delphi que soportan la programacion modular todavia, en cambio java es como te dije 100% orientado a objeto, por tanto cuando quieras instanciar a la variable conexion bastara con poner lo suiguiente:
Cita:
Utilidades.conexion
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 14-03-2009 a las 17:29:08.
Responder Con Cita
  #5  
Antiguo 14-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 19.978
Poder: 10
roman Tiene un aura espectacularroman Tiene un aura espectacular
Parece uno de esos casos donde quien pregunta es el menos interesado en el problema

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como validar si una tabla temporal global existe richy08 MS SQL Server 2 25-08-2007 16:04:55
¿Cómo instalo Firebird de manera muy sencilla? axelbb Firebird e Interbase 11 13-03-2007 15:03:40
como realizo el enlace de manera manual? miamuxi Conexión con bases de datos 0 06-02-2007 18:48:59
como realizo el enlace de manera manual? miamuxi Conexión con bases de datos 0 23-01-2007 19:07:46
cxGrid. abrir nodo en el que estas posicionado por codigo. ahi manera? sakuragi OOP 4 01-08-2005 23:30:10


La franja horaria es GMT +2. Ahora son las 00:26:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi