O Java Developers Kit inclui um pacote conhecido como a API Java Database Connectivity , ou JDBC para breve. Isso fornece uma interface única para interagir com qualquer pacote de banco de dados que fornece um driver JDBC. A maioria das soluções de banco de dados importantes , incluindo MySQL , fornecer um driver JDBC ou em seus discos de instalação ou baixado gratuitamente a partir de sua página web. O driver JDBC MySQL
O driver JDBC para MySQL é chamado MySQL :: Connector /J , e é uma implementação muito completa de API JDBC. O motorista vai ser um arquivo JAR , que deve estar localizado no caminho de classe Java . O mais comum Java IDE , especialmente Eclipse e NetBeans , vai fazer isso por você , desde que você referenciar o arquivo de driver como uma biblioteca. Além disso, a fim de usar os comandos de API JDBC , você precisa inserir o seguinte comando no topo de qualquer classe que irá utilizar diretamente o
import java.sql JDBC * ; . .
Setup
enquanto o JDBC tenta fazer com seus bancos de dados em seus programas Java tão simples quanto possível, há uma série de passos a seguir para configurar a conexão com o banco . Uma vez que é possível escrever um programa que inclui drivers de banco múltiplo , antes de se conectar a um banco de dados você deve informar a API de que driver que você estará usando. Para isso, execute o seguinte : .
Class.forName (" com.mysql.jdbc.Driver " ) newInstance ();
Isso irá retornar uma instância da classe driver (que está incluída no java.sql ), e você pode armazenar a referência a essa instância para uso posterior se quiser. No entanto, não é necessário na maioria das circunstâncias . Se você receber um erro, isso provavelmente significa que o seu caminho de classe não está configurado corretamente .
Criar uma ligação
A conexão de banco de dados devem ser feitas usando uma URL ou um endereço IP. Se o banco de dados está sendo executado na mesma máquina que o programa Java , isso é fácil : A URL é localhost , com um acréscimo significativo: o protocolo ( ou url) identificador. A um familiar para a Web é "http://" . Para um banco de dados MySQL JDBC , o identificador de protocolo correto é " jdbc: mysql ://"
Connection conn = DriverManager.getConnection . ( " Jdbc: mysql ://localhost" , username , password ); < br >
lidar com erros
Qualquer erro sobre uma conexão, uma declaração ou um conjunto de resultados será do tipo SQLException . Para mais detalhes sobre o erro específico , você deve pegar SQLException e imprimir a mensagem de erro para o console. Uma fonte potencial de confusão é a velocidade na qual as conexões tempo limite. Há tempo de sobra para se conectar, executar algumas consultas e obter resultados , mas certamente não há tempo para esperar a entrada do usuário após uma conexão. Se você deve aguardar a entrada do usuário , que normalmente é uma prática melhor para desligar, recuperar a entrada do usuário e , em seguida, volte a ligar novamente para executar as consultas.
Consultas e
Resultados
Existem duas classes fundamentais para a interação com o banco de dados uma vez conectado : a declaração eo ResultSet
Statement s = conn.createStatement () ; s.executeQuery ( "SELECT * FROM empregados " ) ; ResultSet rs = s . . getResultSet ();
Declaração simplesmente envia a string SQL para o banco de dados , de modo que as consultas deverão ser escritos no dialeto nativo do SQL para o banco de dados usado . Uma qualidade importante de um ResultSet é que ele recupera os dados do servidor uma linha de cada vez, e só recupera os dados quando a linha é pedido. O código acima não tenha baixado qualquer resultado ainda do servidor.
Porque é impossível na maioria dos sistemas de saber o tamanho de um conjunto de resultados antes que todos os resultados foram recuperados , é melhor para armazenar um conjunto de resultados , pelo menos temporariamente , no interior de uma estrutura de dados que pode ser eficientemente redimensionada . Classe LinkedList do Java é perfeito para este
resultados LinkedList = new LinkedList ( ) ; . While ( rs.next ()) { results.add ( rs.getString ( "Nome ")); }
E , é sempre uma boa prática para fechar conexões explicitamente em vez de deixá-los timeout:
rs.close (); s.Close (); conn.close ();