Foro sobre Java SE > Problema Java o SQL?
Esta es la forma que uso para conectarme con la bse de datos:
public class Conexion {
private Connection con;
private Statement st;
private ResultSet rs;
private static Conexion instancia;
private Conexion()
{ }
public static Conexion getInstance() {
if (instancia == null) {
instancia = new Conexion();
}
return instancia;
}
public void AbrirConexion()
{ try
{
String userName = "sa";
String password = "sa";
String url = "jdbc:sqlserver://localhost:1433;database=BaseDatoPS";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
con = DriverManager.getConnection(url, userName, password);
} catch (Exception e) {
System.out.println("Error en conexión ");
}
}
public void CerrarConexion()
{ try
{ con.close();}
catch (SQLException e) {
System.out.println("Error al cerrar conexión");
}
Muchas gracias por su ayuda. voy a probarlo, haber si deja de darme el valor incorrecto
Veo que me faltan años luz, para llegar a ser como ustedes.
No veo nada extraño en ese método getTipoPractica.
¿No tendrás por casualidad algo raro en la clase TipoPractica?. Como un valor cambiado por otro. Si no es así, entonces tiene que haber un error en las tablas de la base de datos.
Por otra parte, ten en cuenta que esta línea
con = DriverManager.getConnection(url, userName, password);
tiene un rendimiento muy bajo. Prueba con algo similar al enum que publiqué anteriormente.
Con respecto a usar un singleton, te recomendaría una de las dos implementaciones siguientes, en caso de que no te decidas a usar un enum (que es la más segura)
Una manera:
public class BillPughSingleton {
private BillPughSingleton(){}
private static class SingletonHelper{
private static final BillPughSingleton INSTANCE = new BillPughSingleton();
}
public static BillPughSingleton getInstance(){
return SingletonHelper.INSTANCE;
}
}
La otra:
public static ThreadSafeSingleton getInstanceUsingDoubleLocking(){
if(instance == null){
synchronized (ThreadSafeSingleton.class) {
if(instance == null){
instance = new ThreadSafeSingleton();
}
}
}
return instance;
}
Perdon me equivoque, en vez de forma de pago es esto:
public ArrayList getTipoPractica()
{
ArrayList lista= new ArrayList();
int codigo;
String nombre;
String descripcion;
TipoPractica TP= null;
try{
AbrirConexion();
st=con.createStatement();
String sql="select Codigo, Nombre, Descripcion from TipoPractica";
rs=st.executeQuery(sql);
while(rs.next())
{
codigo=rs.getInt("Codigo");
nombre=rs.getString("Nombre");
descripcion=rs.getString("Descripcion");
TP= new TipoPractica();
TP.setCodigo(codigo);
TP.setNombre(nombre);
TP.setDescripcion(descripcion);
lista.add(TP);
}
}
catch(SQLException e){
System.out.println("Error en la consulta:"+ e.getMessage());
}
finally
{
try{CerrarConexion();}
catch(Exception e){System.out.println("Error en el cierre de la conexion:"+ e.getMessage());}
}
return lista;