Pessoal aqui pelo GUJ passam várias pessoas com problemas de conexão com o banco de dados, métodos de criar e retornar conexão, enfim.
Para ajudar essas pessoas segue o código abaixo, uma classe de conexão, com ela simplificará a conexão com uma base de dados:
import java.sql.*;
public class Acesso {
private Connection con;
public Acesso()
{
try {
Class.forName( "org.gjt.mm.mysql.Driver" );
con = DriverManager.getConnection( "jdbc:mysql://localhost/bd", "user", "password" );
} catch ( Exception e ) {
e.printStackTrace();
}
}
public int executar( String sql )
{
try {
PreparedStatement ps = con.prepareStatement( sql );
return ps.executeUpdate();
} catch ( Exception e ) {
e.printStackTrace();
return 0;
}
}
public int executar( String sql, String param[] )
{
try {
PreparedStatement ps = con.prepareStatement( sql );
for ( int i = 0; i < param.length; i++ ) {
ps.setString( i + 1, param[i] );
}
return ps.executeUpdate();
} catch ( Exception e ) {
e.printStackTrace();
return 0;
}
}
public ResultSet retornaConsulta( String sql )
{
try {
PreparedStatement ps = con.prepareStatement( sql );
return ps.executeQuery();
} catch ( Exception e ) {
e.printStackTrace();
return null;
}
}
public ResultSet retornaConsulta( String sql, String param[] )
{
try {
PreparedStatement ps = con.prepareStatement( sql );
for ( int i = 0; i < param.length; i++ ) {
ps.setString( i + 1, param[i] );
}
return ps.executeQuery();
} catch ( Exception e ) {
e.printStackTrace();
return null;
}
}
}
:arrow: Com os métodos eu consigo economizar linhas com o array de parametros, além de não precisar incluir linhas para abrir a conexão para cada método no qual eu irei acessar o banco de dados.
Neste caso que eu alterei, a classe Acesso implementa o pattern Singleton, ou seja, só pode haver uma única instância daquela classe.
Declarando o construtor como private, você assegura que ninguém poderá instanciar a classe externamente a ela.
E com o método getInstance( ) você retorna uma nova instância da classe, caso não exista alguma, ou senão retorna a corrente instância, assugurando, assim, que exista APENAS uma única instância daquela classe.
o método getInstance( ) DEVE ser static. Esquecí de por isso no código.