Como você se conecta a um banco de dados MySQL em Java?
Quando tento, recebo
java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
Ou
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Ou
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
Respostas:
DriverManager
é uma maneira bastante antiga de fazer as coisas. A melhor maneira é obter umDataSource
, pesquisando um que o contêiner do servidor de aplicativos já esteja configurado para você:ou instanciar e configurar um diretamente do driver do banco de dados:
e, em seguida, obtenha conexões com ele, o mesmo que acima:
fonte
com.mysql.jdbc.Driver
? esse método é melhor?MysqlDataSource
implementajavax.sql.DataSource
qual é o mecanismo mais novo.rs
estmt
? Por que não apenasconn
?Aqui está uma explicação passo a passo de como instalar o MySQL e o JDBC e como usá-lo:
Baixe e instale o servidor MySQL . Apenas faça da maneira usual. Lembre-se do número da porta sempre que você o alterar. É por padrão
3306
.Faça o download do driver JDBC e coloque no caminho de classe , extraia o arquivo ZIP e coloque o arquivo JAR que contém no caminho de classe. O driver JDBC específico do fornecedor é uma implementação concreta da API JDBC ( tutorial aqui ).
Se você estiver usando um IDE como Eclipse ou Netbeans, poderá adicioná-lo ao caminho de classe adicionando o arquivo JAR como Biblioteca ao Caminho de Construção nas propriedades do projeto.
Se você estiver fazendo isso "plain vanilla" no console de comandos, precisará especificar o caminho para o arquivo JAR no argumento
-cp
ou-classpath
ao executar seu aplicativo Java.O
.
está ali apenas para adicionar o atual diretório ao classpath bem para que ele possa localizarcom.example.YourClass
e;
é o separador classpath, pois é no Windows. No Unix e clones:
devem ser usados.Crie um banco de dados no MySQL . Vamos criar um banco de dados
javabase
. Você, é claro, deseja dominar o mundo, então vamos usar o UTF-8 também.Crie um usuário para Java e conceda acesso a ele . Simplesmente porque usar
root
é uma má prática.Sim,
java
é o nome de usuário epassword
a senha aqui.Determine a URL JDBC . Para conectar o banco de dados MySQL usando Java, você precisa de uma URL JDBC na seguinte sintaxe:
hostname
: O nome do host em que o servidor MySQL está instalado. Se estiver instalado na mesma máquina em que você executa o código Java, basta usarlocalhost
. Também pode ser um endereço IP como127.0.0.1
. Se você encontrar problemas de conectividade e usar em127.0.0.1
vez delocalhost
resolvê-lo, terá um problema na sua configuração de rede / DNS / hosts.port
: A porta TCP / IP na qual o servidor MySQL atende. Isso é por padrão3306
.databasename
: O nome do banco de dados ao qual você deseja se conectar. É issojavabase
.Portanto, o URL final deve se parecer com:
Teste a conexão com o MySQL usando Java . Crie uma classe Java simples com um
main()
método para testar a conexão.Se você receber um
SQLException: No suitable driver
, significa que o driver JDBC não foi carregado automaticamente ou que o URL JDBC está errado (ou seja, não foi reconhecido por nenhum dos drivers carregados). Normalmente, um driver JDBC 4.0 deve ser carregado automaticamente quando você o solta no caminho de classe do tempo de execução. Para excluir um e outro, você sempre pode carregá-lo manualmente, como abaixo:Observe que a
newInstance()
chamada não é necessária aqui. É apenas para consertar o velho e o buggyorg.gjt.mm.mysql.Driver
. Explicação aqui . Se essa linha for lançadaClassNotFoundException
, o arquivo JAR que contém a classe do driver JDBC simplesmente não será colocado no caminho de classe.Observe que você não precisa carregar o driver todas as vezes antes de conectar. Apenas uma vez durante a inicialização do aplicativo é suficiente.
Se você obtém um
SQLException: Connection refused
ouConnection timed out
um específico do MySQLCommunicationsException: Communications link failure
, significa que o banco de dados não é acessível. Isso pode ter uma ou mais das seguintes causas:Para resolver um ou outro, siga os seguintes conselhos:
ping
.my.cnf
banco de dados MySQL.--skip-networking option
.finally
.Observe que fechar o
Connection
é extremamente importante. Se você não fechar as conexões e continuar recebendo muitas delas em pouco tempo, o banco de dados poderá ficar sem conexões e o aplicativo poderá falhar. Sempre adquira oConnection
em umatry-with-resources
declaração . Ou se você ainda não estiver no Java 7, feche-o explicitamente emfinally
umtry-finally
bloco. Fecharfinally
é apenas para garantir que ele seja fechado também em caso de exceção. Isso também se aplica aStatement
,PreparedStatement
eResultSet
.Era isso que diz respeito à conectividade. Você pode encontrar aqui um tutorial mais avançado sobre como carregar e armazenar objetos de modelo Java completos em um banco de dados com a ajuda de uma classe DAO básica.
Usar um padrão Singleton para a conexão com o banco de dados é uma abordagem ruim. Veja entre outras perguntas: http://stackoverflow.com/q/9428573/ . Este é um erro nº 1 para iniciantes.
fonte
Inicializar constantes do banco de dados
Crie um nome de usuário, senha, URL e drivers constantes no banco de dados de propriedades constantes, limite de pesquisa etc.
Inicializar conexão e propriedades
Depois que a conexão é estabelecida, é melhor armazenar para fins de reutilização.
Criar propriedades
O objeto de propriedades mantém as informações de conexão, verifique se já estão configuradas.
Conecte o banco de dados
Agora conecte-se ao banco de dados usando as constantes e propriedades inicializadas.
Desconecte o banco de dados
Depois de concluir as operações do banco de dados, feche a conexão.
Tudo junto
Use esta classe
MysqlConnect
diretamente após alterar database_name, nome de usuário e senha etc.Como usar?
Inicialize a classe do banco de dados.
Em outro lugar do seu código ...
Isso é tudo :) Se houver algo para melhorar, edite-o! Espero que isso seja útil.
fonte
com.mysql.jdbc.Driver
disso,jdbc:mysql://localhost:3306/stocks
deve ser usado, pois o primeiro está obsoleto.fonte
Aqui está o mínimo necessário para obter dados de um banco de dados MySQL:
Adicione manipulação de exceção, configuração etc. a gosto.
fonte
Class.forName(...).newInstance()
?Conexão MySQL JDBC com useSSL.
fonte
você precisa ter o jar do conector mysql no seu caminho de classe.
na Java JDBC API faz tudo com bancos de dados. usando JDBC, podemos escrever aplicativos Java para
1. Enviar consultas ou atualizar SQL para DB (qualquer banco de dados relacional) 2. Recuperar e processar os resultados do DB
com os três passos abaixo, podemos recuperar dados de qualquer banco de dados
fonte
Código curto e doce.
Para SQL Server 2012
fonte
Connection
Eu estava usando há algum tempo, parecia a maneira mais fácil, mas também havia recomendações para fazer aif
declaração - exatamenteOu algo assim dessa maneira :)
Provavelmente há algum caso, enquanto
getConnection
pode retornarnull
:)fonte
Você pode ver todas as etapas para conectar o banco de dados MySQL a partir do aplicativo Java aqui . Para outro banco de dados, você só precisa alterar o driver apenas na primeira etapa. Certifique-se de fornecer o caminho certo para o banco de dados e corrigir o nome de usuário e a senha.
Visite http://apekshit.com/t/51/Steps-to-connect-Database-using-JAVA
fonte
Método 1: defina a variável CLASSPATH.
No comando acima, eu configurei o CLASSPATH para a pasta atual e o arquivo mysql-connector-java-VERSION.jar. Portanto, quando o
java MyClassFile
comando for executado, o iniciador de aplicativos java tentará carregar toda a classe Java no CLASSPATH. E descobriu que osDrive
erros de classe => BOOM se foram.Método 2:
Nota: Class.forName ("com.mysql.jdbc.Driver"); Este item foi descontinuado neste momento 2019 abr.
Espero que isso possa ajudar alguém!
fonte
Conexão JDBC MySql:
fonte
Download e Instalação do Driver JDBC
Link para download (independente da plataforma selecionada): https://dev.mysql.com/downloads/connector/j/
Mova o driver JDBC para a unidade C
Descompacte os arquivos e vá para C: \ drive. O caminho do driver deve ser como
C:\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19
Execute seu Java
testMySQL.java
fonte
Código curto
fonte