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

Dudas sobre conexion a BD

Estas en el tema de Dudas sobre conexion a BD en el foro de Java en Foros del Web. Hola, tenia esta duda referente a la conexion de bases de datos con java: Bueno, es mas bien consulta..., tengo esta clase que manda llamar ...
  #1 (permalink)  
Antiguo 30/05/2009, 14:35
 
Fecha de Ingreso: abril-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Dudas sobre conexion a BD

Hola, tenia esta duda referente a la conexion de bases de datos con java:

Bueno, es mas bien consulta..., tengo esta clase que manda llamar a otra:

Código:
        //arrPreg"x" son arreglos String, que recibiran arreglos String provenientes de la clase a la que llaman. Como argumento a la clase ConsultarPreguntas le manda un dato para la base de datos...

        ConsultarPreguntas obj0 = new ConsultarPreguntas("10");
    	arrPreg0 = obj0.getPreguntas();
    	
    	ConsultarPreguntas obj1 = new ConsultarPreguntas("11");
    	arrPreg1 = obj1.getPreguntas();
    	
    	ConsultarPreguntas obj2 = new ConsultarPreguntas("12");
    	arrPreg2 = obj2.getPreguntas();
    	
    	ConsultarPreguntas obj3 = new ConsultarPreguntas("13");
    	arrPreg3 = obj3.getPreguntas();
    	
    	ConsultarPreguntas obj4 = new ConsultarPreguntas("14");
    	arrPreg4 = obj4.getPreguntas();
    	
    	ConsultarPreguntas obj5 = new ConsultarPreguntas("15");
    	arrPreg5 = obj5.getPreguntas();
    	
    	ConsultarPreguntas obj6 = new ConsultarPreguntas("16");
    	arrPreg6 = obj6.getPreguntas();
Y aqui la clase ConsultarPreguntas, ésta retorna un arreglo con la consultas hechas:

Código:
import java.sql.*;

public class ConsultarPreguntas
{
	private String dpto;
	static final String URL_BD = "jdbc:mysql://127.0.0.1:3306/tec";
	static final String	Controlador = "com.mysql.jdbc.Driver";

	Connection conexion;
	Statement sentenciaSQL;
	ResultSet conjuntoResultados;

	String ar[];
	int numeroDeColumnas;
	int v;

	public ConsultarPreguntas(String dpto)  throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException
	{
		this.dpto=dpto;
		try
		{
		Class.forName(Controlador).newInstance();

		conexion = DriverManager.getConnection(URL_BD,"root","david2");

		sentenciaSQL = conexion.createStatement();

		conjuntoResultados = sentenciaSQL.executeQuery("SELECT pregunta FROM pregunta WHERE id_dpto = " + dpto);
		
		while(conjuntoResultados.next())
		{
			v+=1;
		}

		ar = new String[v];
		
		int x=0;
		conjuntoResultados.beforeFirst();

		while(conjuntoResultados.next())
		{
			ar[x]=conjuntoResultados.getString("pregunta");
			x++;
		}

		}
		catch(ClassNotFoundException e )
		{
			JOptionPane.showMessageDialog(null,"HolaClass");
		}
		catch(SQLException e)
		{
			System.err.println("Excepcion: " + e.getMessage());
		}
	}

	public String[] getPreguntas()
	{
		return ar;
	}

	public int getLargoArreglo()
	{
		return ar.length;
	}
}

Mi preguntas serian..., puede existir mas de una conexion al mismo tiempo a la base de datos, porque al hacer esto:

Código:
        ConsultarPreguntas obj0 = new ConsultarPreguntas("10");
    	arrPreg0 = obj0.getPreguntas();
    	
    	ConsultarPreguntas obj1 = new ConsultarPreguntas("11");
    	arrPreg1 = obj1.getPreguntas();
estoy diciendo que cree otra conexion sin cerrar la primera.

Tambien no se si esto aplique a los objetos ResultSet.


- Otra pregunta que tengo es si un mismo objeto ResultSet puede "sobreescribirse", es decir, ejecutar un "executeQuery" una vez, y luego ejecutarlo otra vez:

Código:
Statement aw = conexion.createStatement();
ResultSet at = aw.executeQuery("SELECT * FROM pregunta");

,y enseguida

at = aw.executeQuery("SELECT * FROM departamento");

PD: Espero pueda ayudarme con estas dudas, que estoy atorado con una aplicacion que no ahce lo que quiero, y esta relacionado con estas cosas.

Gracias por leer :)
  #2 (permalink)  
Antiguo 30/05/2009, 17:20
 
Fecha de Ingreso: septiembre-2008
Ubicación: Córdoba
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Dudas sobre conexion a BD

Creo que la conexión a la bd debería ser una sola, por lo menos en esta aplicación, por lo que la deberías instanciar una única vez y reutilizarla, y los resultsets sí puedes sobreescribirlos a menos que desees conservarlo, si lo usas luego nuevamente. Saludos...
  #3 (permalink)  
Antiguo 30/05/2009, 17:24
 
Fecha de Ingreso: septiembre-2008
Ubicación: Córdoba
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Dudas sobre conexion a BD

Perdón pero creo que no se entiende lo que dije...

Sobre los ResultSets

Statement aw = conexion.createStatement();
ResultSet at = aw.executeQuery("SELECT * FROM pregunta");

// supongo que aqui haces algo con los datos de la consulta, en caso contrario, pierdes los datos, al sobreescribirlo abajo
,y enseguida

at = aw.executeQuery("SELECT * FROM departamento");

Espero que quede un poco más claro
  #4 (permalink)  
Antiguo 31/05/2009, 13:56
 
Fecha de Ingreso: abril-2009
Mensajes: 7
Antigüedad: 15 años
Puntos: 0
Respuesta: Dudas sobre conexion a BD

Pues si, queria sobreescribir el ResultSet, pero no se sibreescribia, no se porque...., ahi el porque d emi pregunta, java no me deja sobreescribirlo, por eso intente crear tambien varias instancias de la clase, pero tampoco funciona...
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 22:15.