Fala Galera!
Estou começando em Java, estou criando uma classe de acesso ao banco de dados. Vou coletando uma informação aqui e outra ali e aos poucos vou montando. Porém como sou iniciante em java, não sei se está classe está legal. Gostaria da opinião de todos, o que acham da classe e o que posso mudar, já que vcs tem mais experiência que eu, desta maneira me previnerei de futuros problemas com está classe.
Fico muito grato com a colaboração de todos.
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
public class DataBase {
//define as variáveis de instancia única
private static boolean loadDriver = false;
private String arquivo = null;
//Construtor
public DataBase(String arquivo) {
this.arquivo = arquivo;
}
//método para registrar o driver do banco de dados
private void regDriver() {
//abre o arquivo de propriedades especificado
Properties propriedades = new Properties();
try {
FileInputStream conteudo = new FileInputStream(arquivo);
propriedades.load(conteudo);
conteudo.close();
loadDriver = true;
}
catch (IOException ioe){
System.out.println("Erro ao ler o arquivo de propriedades do BD");
System.out.println(ioe.getMessage());
ioe.printStackTrace();
}
//atribui o valor das propriedades do arquivo para as variáveis
String driver = propriedades.getProperty("jdbc.driver");
try {
//registra o driver do banco de dados
Class.forName(driver);
System.out.println("Driver registrado");
}
catch (ClassNotFoundException cnf){
System.out.println("Classe não localizada");
System.out.println(cnf.getMessage());
}
}
//metodo para pegar conexão com o banco
private Connection getConnection() {
Connection conexao = null;
//registra o driver do banco de dados
if (loadDriver == false) {
regDriver();
}
//abre o arquivo de propriedades especificado
Properties propriedades = new Properties();
try {
FileInputStream conteudo = new FileInputStream(arquivo);
propriedades.load(conteudo);
conteudo.close();
}
catch (IOException ioe){
System.out.println("Erro ao ler o arquivo de propriedades do BD");
System.out.println(ioe.getMessage());
ioe.printStackTrace();
}
//atribui o valor das propriedades do arquivo para as variáveis
String banco = propriedades.getProperty("jdbc.banco");
String usuario = propriedades.getProperty("jdbc.usuario");
String senha = propriedades.getProperty("jdbc.senha");
try {
//atribui a conexão criada a variável unica conexao
conexao = DriverManager.getConnection(banco, usuario, senha);
conexao.setAutoCommit(false);
System.out.println("Conexão aberta");
}
catch (SQLException sqle){
conexao = null;
System.out.println("Erro no SQL");
while(sqle != null){
System.err.println("Estado SQL: " + sqle.getSQLState());
System.err.println("Mensagem de Erro: " + sqle.getMessage());
System.err.println("Mensagem de Erro do Banco: " + sqle.getErrorCode());
sqle = sqle.getNextException();
}
}
return conexao;
}
//fecha a conexão com o banco, caso esteja aberta
public void closeConnection(Connection conexao) {
try {
if (!conexao.isClosed()){
conexao.setAutoCommit(true);
conexao.close();
conexao = null;
System.out.println("Conexão fechada");
}
}
catch(SQLException sqle) {
System.err.println("Erro ao fechar a conexão.");
sqle.printStackTrace();
}
}
public void closeConnection(Connection conexao, PreparedStatement ps) {
try {
closeConnection(conexao);
if (ps != null){
ps.close();
}
}
catch(SQLException sqle) {
System.err.println("Erro ao fechar a conexão.");
sqle.printStackTrace();
}
}
public void closeConnection(Connection conexao, PreparedStatement ps, ResultSet rs) {
try {
closeConnection(conexao, ps);
if (rs != null){
rs.close();
}
}
catch(SQLException sqle) {
System.err.println("Erro ao fechar a conexão.");
sqle.printStackTrace();
}
}
// o método PrepareStatement representa uma simples query ou comando SQL é identico
// ao método CreateStatemente porém tem algumas funcionalidades a mais, como parâmetros
private PreparedStatement getPrepareStatement(String SQL) {
Connection conn = null;
try {
conn = getConnection();
return conn.prepareStatement(SQL);
} catch (SQLException e) {
System.err.println("Erro ao prepara o sql");
e.printStackTrace();
closeConnection(conn);
return null;
}
}
public ResultSet retornarConsulta(String sql){
try {
PreparedStatement ps = getPrepareStatement(sql);
return ps.executeQuery();
}
catch (Exception e){
e.printStackTrace();
return null;
}
}
public int executarSql (String sql){
try {
PreparedStatement ps = getPrepareStatement(sql);
return ps.executeUpdate();
}
catch (Exception e){
e.printStackTrace();
return 0;
}
}
}
[size=“11”]
[color=“red”]
- Editado: Aumente as chances de alguém responder o seu tópico. Use BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários. - Matheus[/color][/size] :joia: