Escolar Documentos
Profissional Documentos
Cultura Documentos
JDBC
JDBC
1 Introduo
Java certamente um mercado com grandes oportunidades. Essa popularidade no aconteceu por acaso. Ao criar um projecto com Java ganha-se muita liberdade. O sistema fica independente de vrios fabricantes de hardware, de software, da base de dados, at mesmo do fabricante da virtual machine. Alm disso, possvel fazer todo o desenvolvimento num sistema operativo e fazer deploy num outro. Apesar de tanta popularidade, o desenvolvimento com Java no se tornou trivial. necessrio conhecer com certa profundidade as APIs, mesmo o projecto utilize frameworks tais como struts, Vraptor ou JSF. Este curso aborda desde base de dados at o uso de frameworks MVC para separao de cdigo. Veremos ainda o SpringMVC e o Hibernate, duas ferramentas essenciais para programadores Java.
} }
Repare que o mtodo getConnection() uma fbrica de conexes, isto , ele cria novas conexes. Basta invocar o mtodo e recebemos uma conexo pronta para uso, no importando de onde vem e eventuais detalhes de criao. Portanto, vamos chamar a classe de ConnectionFactory e o mtodo de getConnection.
String sql = "insert into contatos " + "(nome,email,endereco,dataNascimento) " + "values (?,?,?,?)"; No colocamos os pontos de interrogao por acaso, mas sim porque realmente no sabemos o que desejamos inserir. Estamos interessados em executar aquele cdigo mas no sabemos ainda quais so os parmetros que utilizaremos nesse cdigo SQL que ser executado, chamado de statement. Veja o exemplo abaixo, que abre uma conexo e insere um contacto no banco: public class JDBCInsere { public static void main(String[] args) throws SQLException { // conectando Connection con = new ConnectionFactory().getConnection(); // cria um preparedStatement String sql = "insert into contatos" + " (nome,email,endereco,dataNascimento)" + " values (?,?,?,?)"; PreparedStatement stmt = con.prepareStatement(sql); // preenche os valores stmt.setString(1, "Cenfoss"); stmt.setString(2, "contato@cenfoss.co.mz");
stmt.setString(3, "Av. Eduardo Mondlane, 2341"); stmt.setDate(4, new java.sql.Date( Calendar.getInstance().getTimeInMillis())); // executa stmt.execute(); stmt.close(); System.out.println("Gravado!"); con.close(); } } No comum utilizar JDBC directamente hoje em dia. O mais praticado o uso de alguma API de ORM como o Hibernate ou JPA. Tanto na JDBC quanto em bibliotecas ORM deve-se prestar ateno no momento de fechar a conexo. O exemplo anterior no a fecha caso algum erro ocorra no momento de inserir um dado no banco de dados. O comum fechar a conexo em um bloco finally: public class JDBCInsere { public static void main(String[] args) throws SQLException { Connection con = null; try { con = new ConnectionFactory().getConnection();
// faz um monte de operaes. // que podem lanar exceptions runtime e SQLException catch(SQLException e) { System.out.println(e); } finally { con.close(); } } }