A (Java Database Connectivity ou JDBC ) API é um conjunto de classes padrão projetados para fornecer uma única interface unificada para conexão com todas as soluções de banco de dados importantes . Bancos de dados suportados para o JDBC incluem MySQL , Oracle, PostgreSQL, DB2 e Microsoft SQL Server. Este artigo irá utilizar o software de banco de dados de código aberto , MySQL, para ilustrar os princípios do JDBC . Faça o download e Link para o MySQL Driver JDBC
JDBC requer um driver para cada tipo de banco de dados que vai ligar, e na produção e manutenção de motorista que é de responsabilidade dos desenvolvedores do software de banco de dados. No caso do MySQL, o driver JDBC oficial é chamado MySQL :: Connector /J , e pode ser obtido gratuitamente a partir da página web MySQL . O motorista vai ser um arquivo JAR , e esse arquivo deve estar no classpath Java. Mais Java IDE vai lidar com isso automaticamente para você, se você adicionar o arquivo de driver como uma biblioteca externa .
Todos os comandos necessários para interagir com o JDBC deve estar disponível por meio da importação java.sql . * No topo da sua classe arquivo .
registrar o driver
Isto não requer que você envie um formulário de inscrição para sol. Isso é para dizer qual driver de banco de dados Java você vai estar usando com o JDBC para os seguintes procedimentos. Você registrar o driver com o seguinte comando: .
Motorista d = (Driver) Class.forName (" com.mysql.jdbc.Driver " ) newInstance ();
O conteúdo da nome do condutor ( com.mysql.jdbc.Driver ) aplica-se apenas para MySQL . A seqüência exata necessária para os outros condutores de banco de dados (como o PostgresSQL ) será diferente.
Se você receber uma java.lang.ClassNotFoundException , isso provavelmente significa que o motorista não está no caminho de classe.
estabelecer a conexão
conexões são estabelecidas com o seguinte comando :
Connection conn = DriverManager.getConnection (url , username , password ); < br >
Se o banco de dados está na mesma máquina que o cliente Java acessá-lo , em seguida, "localhost" vai funcionar como um endereço na maioria dos casos . Se o número da porta para o banco de dados não é o padrão para que o pacote de banco de dados , então ele pode ser anexado ao URL usando um cólon.
Uma adição importante é o identificador de URL. Isso vai mudar para diferentes servidores de banco de dados. No entanto, para o MySQL, o seguinte seria válida : String url = " jdbc: mysql ://localhost: 8080 ";
uma conexão deve falhar por qualquer motivo, uma SQLException será lançada , e conterá uma mensagem de erro com mais informações que você pode imprimir para System.err para depuração.
Banco de Dados Timeouts
é importante lembrar que , a partir de criar a ligação, um existe conexão ativa entre o cliente eo servidor. No entanto, muitos bancos de dados têm requisitos de tempo limite muito apertados. É importante que uma conexão não pode ser estabelecida até consultas estão prontas . Ao invés de estabelecer uma conexão e depois esperar para a entrada do usuário para saber o que questiona a correr , é melhor para estabelecer uma ligação de teste , desconecte e reconecte uma vez consultas estão disponíveis.
Executar consulta e buscar resultados
Para emitir uma consulta , você deve criar uma instrução usando uma conexão ativa do banco de dados
Statement s = conn.createStatement (); . s.executeQuery ( "SELECT * FROM" + tableName );
Para obter os resultados , você pode executar imediatamente :
ResultSet rs = s.getResultSet ();
ResultSets
< br >
uma coisa importante de saber sobre ResultSets é que eles puxam os dados do servidor uma linha de cada vez. O comando acima só inicializa um objeto ResultSet e recebe alguns metadados sobre o objeto (os nomes mais importante de colunas e tipos ) . Na verdade, não recuperar todos os dados . Os dados devem ser puxado para fora de um ResultSet e armazenados em algum outro local antes que a conexão é fechada , geralmente com um loop procurando algo como :
dados LinkedList = new LinkedList (); while ( rs.next ()) { data.add ( rs.getString (1) ) //Recuperar todos os dados da primeira coluna }
Fechar Conexões
na maioria das vezes , o motorista vai lidar com si conexões de fechamento. No entanto, pode ajudar a evitar problemas mais tarde, se você sempre fechar explicitamente o ResultSet , Statement e Conexões quando terminar com eles
rs.close (); . S.Close (); conn.close ();