Instanciar uma classe de acesso a banco de dados

2 respostas
C

Olá, bom dia. COmo eu faço para instanciar uma classe de acesso a banco de dados (como eu passo os parâmetros para ela)? Ex:

try {

String dsn = "jdbc:odbc:ipcounter";
	   String usuario = "";
	   String senha = "";
	   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	   Connection con;
	   con = DriverManager.getConnection(dsn,usuario,senha);
	   Statement st = con.createStatement();
	   ResultSet rs = st.executeQuery("SELECT * FROM cadastro WHERE ir = 'ir0100'" );
	   while (rs.next()){
		   System.out.println(rs.getString("ip") + " - " + rs.getString("ir") + " - " + rs.getString("counter"));
	                                          }
          
	   st.close();
	   con.close();
                 //String contador = rs.getString("ir");
               		}
	catch(Exception e) {
		System.out.println("Nao foi possível realizar a conexão.");
	}

Como eu passo estes parâmetros para o novo objeto que eu crio?

2 Respostas

von.juliano

Cara, já que vc é novo no GUJ, dá uma lida nesse tópico:
http://www.guj.com.br/posts/list/50115.java
Ele te ensina à usar os recursos do fórum.

Quanto à sua pergunta, eu faço o seguinte, crio a classe ConnectionFactory:
public class ConnectionFactory {

	private static final String dsn = "jdbc:odbc:ipcounter";

	private static final String driver = "sun.jdbc.odbc.JdbcOdbcDriver";

	private static final String usuario = "";

	private static final String senha = "";

	public static Connection getConnection() throws SQLException {
		try {
			Class.forName(driver);
			return DriverManager.getConnection(dsn, usuario, senha);
		} catch (ClassNotFoundException e) {
			throw new SQLException(e.getMessage());
		}
	}
}
Em outra classe eu faço a busca no banco, por exemplo CadastroDAO:
public class CadastroDAO {

	private Connection connection;

	private String query;

	public CadastroDAO() throws SQLException {
		this.connection = ConnectionFactory.getConnection();
	}

	public seusDados buscaDados() throws SQLException {
		query= "SELECT * FROM cadastro WHERE ir = 'ir0100";

		PreparedStatement stmt = connection.prepareStatement(strSQL);
		ResultSet rs = stmt.executeQuery();
		
		// É só popular esse objeto e vc vai conseguir passar os dados p/ outra classe
		seusDados dados = new seusDados();
		dados.setDado1(rs.getString("dado1"));
		dados.setDado2(rs.getString("dado2"));
		
		rs.close();
		stmt.close();
		connection.close();

		return dados;
	}
}
Blz? Se não entendeu posta aí de novo! :thumbup:
M

Você pode isolar todo o código de conexão em uma classe e implementar um método que retorna um objeto java.sql.Connection. Não se esqueça de garantir, caso não seja sua intenção, se a classe em questão retorna apenas uma cópia da instância de conexão, garantindo que a aplicação não gere diversas conexões simultâneas. Para isso, implemente o padrão de projeto Sigleton.

[]s

Criado 5 de março de 2007
Ultima resposta 5 de mar. de 2007
Respostas 2
Participantes 3