Olá pessoal,
Bem, estou aprendendo Java. E o meu exercício teste inicial é criar uma espécie simples de Agenda de contatos.
Atualmente estou desenvolvendo uma parte simples de conexão com o Banco de dados, aonde tenho duas classes chamadas BancoDados.java, que contém um método chamado ConectaBD por onde a conexão é feita. Já o segundo, é uma interface simples para a configuração da conexão.
Segue o código da classe BancoDados.java
/**
* @file BancoDados.java
* @author Sergio Figueras
* @mail [email removido]
* @date 09/04/2008
* @note Classe para manipulação de dados do Banco de dados da agenda.
*
*
* Tipo de licença: BSD
* Copyright (c) 1982, 1986, 1990, 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
package agenda.comm;
//Declarações import
//A primeira declaração importa as classes e métodos SQL.
import java.sql.*;
public class BancoDados{
public static void ConectaBD(String ipBancoDados, String aliasBancoDados, String userBancoDados, String passwordBancoDados, String portaBancoDados)
{
/*
* Este método tem a função de conectar o Banco de Dados.
* Banco de dados: MySQL.
* username: sergio
* password: sergio
*
* Procedimentos(Por ordem):
* 0 - Setar os argumentos de conexão.
* 1 - Realizar a conexão com o Drive.
* 2 - Realizar a conexão com o Banco de Dados.
*/
String CaminhoBD = "jdbc:mysql://"+ipBancoDados+":"+portaBancoDados+"/"+aliasBancoDados+"?user="+userBancoDados+"&password="+passwordBancoDados; // Variavel armazena PATH do BD.
Connection Varconnection = null; // Variavel de conexão. (TYPE: CONNECTION)
try
{
/*
* Este container TRY testa o Drive de conexão.
*/
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Drive JDBC carregado com Sucesso...");
}
catch (Exception E)
{
System.out.println("ERRO: Impossível carregar o Drive JDBC.");
E.printStackTrace();
return;
}
try
{
/*
* Este container TRY testa a conexão com o Banco.
*/
Varconnection = DriverManager.getConnection(CaminhoBD);
System.out.println("A conexão foi bem sucedida...");
}
catch (Exception ExConexao)
{
System.out.println("ERRO: A conexão com o Banco de dados foi impossível, verifique\n" +
"as configurações de conexão e as permissões do Banco de dados.");
ExConexao.printStackTrace();
return;
}
}
}
Agora, a seguir, o código do arquivo principal.java
/**
* @file principal.java
* @author Sergio Figueras
* @mail [email removido]
* @date 09/04/2008
* @note Classe para execução principal do aplicativo.
*
*
* Tipo de licença: BSD
* Copyright (c) 1982, 1986, 1990, 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
package agenda.comm;
//Declarações import
//A primeira declaração importa a classe Scanner, que será usado para entrada de dados.
import java.util.Scanner;
public class principal {
public static void main(String[] args)
{
principal.ConfigurarConexao();
}
public static void ConfigurarConexao()
{
/*
* METODO: ConfigurarConexao()
* Este método tem por objetivo pedir para que o usuário digite parametros de configuração.
* 1 - O método perguntará se o usuário deseja usar a configuração padrão ou personalizada.
* 2.1 - Caso nao deseje, será utilizada a configuração padrão do software.
* 2.2 - Caso deseje, as configurações novas serão armazenadas e usadas no método ConectaBD(). Referência: BancoDados.java
*/
Scanner input = new Scanner(System.in); //Criando objeto do tipo Scanner para inserção de dados.
/* VARIAVEIS DE CONFIGURAÇÃO
* Abaixo, o nome das variáveis que serão criadas e seu tipo e uso.
* portaBancoDados1 (INT): Usada para armazenar a porta aonde a conexão será realizada.
* ipBancoDados1 (STRING): Usada para armazenar o endereço de IP aonde está armazenado o BD.
* * aliasBancoDados1(STRING): Usada para armazenar o nome do alias do BD.
* userBancoDados1 (STRING): Usada para armazenar o nome de usuário que se conectara no banco.
* passwordBancoDados1(STRING): Usada para armazenar a senha do usuário no BD.
*/
String opcao, ipBancoDados1, aliasBancoDados1, userBancoDados1, passwordBancoDados1, portaBancoDados1;
System.out.print("Deseja realizar nova configuração de conexão ou usar a padrão?[0(sim)/1(não)]: ");
opcao = input.nextLine();
opcao = opcao.toUpperCase();
// Condicional para verificar a opção desejada.
if (opcao == "Y")
{
System.out.print("Por favor, digite o IP ao qual deseja se conectar: ");
ipBancoDados1 = input.nextLine();
System.out.print("\nPor favor, digite a porta de conexão do MySQL: ");
portaBancoDados1 = input.nextLine();
System.out.print("\nPor favor, digite o Alias do banco a ser conectado: ");
aliasBancoDados1 = input.nextLine();
System.out.print("\nPor favor, digite o nome de usuário: ");
userBancoDados1 = input.nextLine();
System.out.print("\nPor favor, digite a senha de usuário: ");
passwordBancoDados1 = input.nextLine();
}
if (opcao == "N")
{
/*
* As variáveis abaixo estão sendo inicializadas com o valor padrão, caso o
* usuário tenha escolhido manter a configuração padrão.
*/
ipBancoDados1 = "127.0.0.1";
aliasBancoDados1 = "AgendaTeste";
userBancoDados1 = "sergio";
passwordBancoDados1 = "sergio";
portaBancoDados1 = "3306";
BancoDados.ConectaBD(ipBancoDados1, aliasBancoDados1, userBancoDados1, passwordBancoDados1, portaBancoDados1);
}
}
}
O Problema: Eu não sei porquê (e aliás, como gostaria de saber, quando executo essa classe ele não executa o método ConectaBD corretamente. Na verdade, ele nem chega a executar caso a opção “Y” seja digitada.
Sei que deve ter algumas coisas erradas, por favor, quem tiver disponibilidade para comentar sobre a clareza do código, dar algumas dicas, todas essas são bem vindas.
Obrigado!