Banco de dados: MySQL
Ao escrever um aplicativo, para facilitar a depuração do programa, as informações da exceção podem ser exibidas no código de tratamento de exceção, para que o código possa ser depurado de acordo com os prompts de erro. O código de tratamento de exceções geralmente pode ser escrito assim:
tentar{
…
}catch(Exceção e){
System.out.println(e.toString());
}
Aqui estão algumas mensagens de erro comuns:
(1) A mensagem de erro exibida quando o driver não existe é a seguinte:
java.lang.ClassNotFoundException: com.mysql.jdbc.Drive
A segunda metade é o nome do driver que você escreveu no programa.
Solução: Verifique cuidadosamente se o nome da classe está escrito incorretamente. Se o nome da classe não estiver escrito incorretamente, significa que o pacote compactado onde o driver está localizado não foi introduzido no projeto.
(2) A mensagem de erro exibida quando o URL é escrito incorretamente é a seguinte:
java.sql.SQLException: Nenhum driver adequado
Solução: Verifique cuidadosamente se o formato da URL está correto. Os formatos de URL de diferentes bancos de dados são diferentes.
(3) A mensagem de erro exibida quando o endereço IP do host está incorreto ou a rede não está disponível é a seguinte:
com.mysql.jdbc.CommunicationsException: Falha no link de comunicação devido à exceção subjacente:
** COMEÇAR EXCEÇÃO Aninhada **
java.net.ConnectException
MENSAGEM: A conexão expirou: conecte
STACKTRACE:
java.net.ConnectException: Tempo limite de conexão esgotado: conectar
em java.net.PlainSocketImpl.socketConnect (método nativo)
em java.net.PlainSocketImpl.doConnect (fonte desconhecida)
em java.net.PlainSocketImpl.connectToAddress (fonte desconhecida)
em java.net.PlainSocketImpl.connect (fonte desconhecida)
em java.net.SocksSocketImpl.connect (fonte desconhecida)
em java.net.Socket.connect (fonte desconhecida)
em java.net.Socket.connect (fonte desconhecida)
em java.net.Socket.<init>(fonte desconhecida)
em java.net.Socket.<init>(fonte desconhecida)
em com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
em com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
em com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
em com.mysql.jdbc.Connection.<init>(Connection.java:393)
em com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
em java.sql.DriverManager.getConnection (fonte desconhecida)
em java.sql.DriverManager.getConnection (fonte desconhecida)
em test.JDBCTest.oracleTest(JDBCTest.java:25)
em test.JDBCTest.main(JDBCTest.java:12)
** EXCEÇÃO FINAL Aninhada **
Solução: Verifique se o endereço IP está correto e se há algum problema com a rede.
(4) A mensagem de erro se a porta estiver errada ou o servidor de banco de dados não for iniciado é a seguinte:
com.mysql.jdbc.CommunicationsException: Falha no link de comunicação devido à exceção subjacente:
** COMEÇAR EXCEÇÃO Aninhada **
java.net.ConnectException
MENSAGEM: Conexão recusada: conectar
STACKTRACE:
java.net.ConnectException: Conexão recusada: conectar
em java.net.PlainSocketImpl.socketConnect (método nativo)
em java.net.PlainSocketImpl.doConnect (fonte desconhecida)
em java.net.PlainSocketImpl.connectToAddress (fonte desconhecida)
em java.net.PlainSocketImpl.connect (fonte desconhecida)
em java.net.SocksSocketImpl.connect (fonte desconhecida)
em java.net.Socket.connect (fonte desconhecida)
em java.net.Socket.connect (fonte desconhecida)
em java.net.Socket.<init>(fonte desconhecida)
em java.net.Socket.<init>(fonte desconhecida)
em com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:132)
em com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:273)
em com.mysql.jdbc.Connection.createNewIO(Connection.java:1639)
em com.mysql.jdbc.Connection.<init>(Connection.java:393)
em com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:262)
em java.sql.DriverManager.getConnection (fonte desconhecida)
em java.sql.DriverManager.getConnection (fonte desconhecida)
em test.JDBCTest.oracleTest(JDBCTest.java:25)
em test.JDBCTest.main(JDBCTest.java:12)
** EXCEÇÃO FINAL Aninhada **
Solução: Verifique se a porta está correta e se o servidor de banco de dados está iniciado.
(5) A mensagem de erro exibida quando o nome do banco de dados está incorreto é a seguinte:
java.sql.SQLException: banco de dados desconhecido 'test2'
Solução: Verifique se o banco de dados existe.
(6) A mensagem de erro exibida quando o nome de usuário ou senha está incorreto é a seguinte:
java.sql.SQLException: Acesso negado ao usuário 'roo'@'localhost' (usando senha: YES)
Solução: confirme se o nome de usuário e a senha estão corretos.
(7) A mensagem de erro gerada pelo erro do nome da tabela é a seguinte:
java.sql.SQLException: A tabela 'test.student1' não existe
Solução: Verifique se a tabela existe e se o nome da tabela está escrito incorretamente.
(8) A mensagem de erro gerada pelo erro do nome da coluna é a seguinte:
java.sql.SQLException: Coluna desconhecida 'sid' em 'lista de campos'
Solução: observe mais de perto os nomes das colunas na tabela do banco de dados.
(9) Ao processar o conjunto de resultados, o número de sequência da coluna a ser obtida é maior que o número de colunas ou menor que 0
A mensagem de erro exibida é a seguinte:
java.sql.SQLException: Índice de coluna fora do intervalo, 4 > 3.
O pano de fundo desse erro é que existem apenas 3 colunas na tabela do banco de dados e rs.getString(4) é usado ao buscar informações. Esse erro é fácil de cometer, especialmente ao usar o processamento de loop.
(10) Ao executar a instrução insert, se o número de colunas na tabela for diferente daquele da instrução insert, a mensagem de erro exibida é a seguinte:
java.sql.SQLException: a contagem de colunas não corresponde à contagem de valores na linha 1
O pano de fundo deste erro é: existem 3 colunas na tabela do banco de dados e 4 valores foram fornecidos durante a inserção. A instrução SQL é a seguinte:
inserir nos valores do aluno ('0011323','Li Xu',22,99).
(11) Ao executar a instrução insert, a chave primária é repetida.
A mensagem de erro exibida é a seguinte:
java.sql.SQLException: entrada duplicada '0011323' para a chave 1
O pano de fundo desse erro é: uma instrução SQL foi executada duas vezes consecutivas e ocorreu um erro na segunda vez.
(12) Ao executar a instrução insert, a mensagem de erro se o valor for muito longo é a seguinte:
java.sql.SQLException: Dados muito longos para a coluna 'id' na linha 1
Solução, verifique o comprimento da coluna no banco de dados.