Dúvida em JAVA e POO

11 respostas
C

Sou estudante e estou iniciando no curso de POO e JAVA … ocorre que foi dado um problema para resolver e estou tendo alguma dificuldade … alguém poderia em ajudar ?

Problema: Nos dias atuais, menssagens de SPAM tornaram-se muito comum.
Algumas delas tem efeito mutiplicativo pois te levam a repassar a
menssagem recebida para todos os seus amigos. Algumas menssagens de
SPAM desejam paz, amor e alegria, outros prometem deixá-lo rico, e
alguns apenas lembram você da importância de manter uma amizade. Já
pensou se todos que recebessem uma menssagem a enviasse para seus
respectivos amigos? Será que esta menssagem chegaria a todas as
pessoas existentes no mundo?
Missão: Para este trabalho, os grupos deverão acessar uma tabela
chamada “Nomes” localizada em um banco de dados no servidor. Cada registro desta tabela contém o nome da pessoa,
e os nomes dos amigos que ela conhece. Neste grupo seleto de pessoas,
todos adoram SPAM e sempre repassam as menssagens recebidas por elas a todos os seus respectivos conhecidos, entretanto, nenhuma dessas
pessoas enviam uma mesma menssagem duas vezes. A missão do grupo é construir um programa que dado duas pessoas X e Y, descubra se ao ser enviado um Spam pela pessoa X, a pessoa Y receberá a mensagem.

Para acessar o banco de dados, utilize a classe DataBase.java
implementada em sala de aula. Não esqueça de colocar o driver de
conexão para o Banco de Dados MySql mySqlDriver.jar no mesmo diretório da aplicação. Para executar a aplicação:

java -classpath c:[DIRETÓRIO]\mySqlDriver.jar;c:[DIRETÓRIO]\ [NOME
DA APLICAÇÃO]

O arquivo Exemplo.java abre uma conexão com o Banco de Dados e lista
todos os registros da tabela Nomes.

… as configurações e acesso estão OK …aparentemente tenho que criar uma classe para primeiramente verificar se os nomes digitados constam na base de dados … se os dois nomes constarem dái então será feito a outra classe para verificar se determinada pessoa irá receber o email através do SPAM … (através de if e else) …
Até aí tudo bem … o que não sei é como chamar o banco de dados nas
classes que terão que ser criadas …
Alguém, pode me ajudar ?
Chris

11 Respostas

ziegfried

Provavelmente você terá que instanciar um objeto do tipo DataBase nestas outras classes e utilizar seus métodos. Posta o código dessa classe DataBase pra gente vê…

C

import java.sql.*;

public class DataBase

{

private Connection con;

private Statement stmt;

private ResultSet result;
private boolean msgOn;
private String serverName;
private String dbName;
private String userName;
private String password;

public DataBase(String host, String db, String user, String pass)
{
	serverName = host;
	dbName = db;
	userName = user;
	password = pass;
	msgOn = false;
}

public void setMsgOn() 
{ 
	msgOn = true;
}

public void setMsgOff() 
{ 
	msgOn = false;
}

private void print(String msg)
{
	if(msgOn)
		System.out.println(msg);
}

public void Connect()
{
	try 
	{
		//Carregando o JDBC Driver
		String driverName = "org.gjt.mm.mysql.Driver"; // MySQL MM JDBC driver
		Class.forName(driverName);

		//Criando a conexão com o Banco de Dados
		String url = "jdbc:mysql://" + serverName + "/" + dbName; // a JDBC url
		
		print("abrindo conexão com Banco de Dados...");
		con = DriverManager.getConnection(url, userName, password);
		print("Conexão aberta.");
		
		//Criando um objeto para executar querys
		stmt = con.createStatement();
		
	} 
	catch(ClassNotFoundException e) 
	{
		//Driver não encontrado
		System.out.println("O driver expecificado não foi encontrado."); 
	} 
	catch (SQLException e) 
	{
		//Não está conseguindo se conectar ao banco 
		System.out.println("Não foi possível conectar ao Banco de Dados"); 
	}
}

public ResultSet query(String sqlquery)
{
	try 
	{
	    result = stmt.executeQuery(sqlquery);
	}
	catch(SQLException e)
	{
		System.out.println(e.getMessage());
	}
	return(result);
}

public void close()
{
	try 
	{
		con.close();
		print("Conexão fechada com sucesso!");
	}
	catch(SQLException e)
	{
		System.out.println(e.getMessage());
	}	
}

}

C

a outra classe criada

import java.sql.ResultSet;
import java.sql.SQLException;

public class Exemplo

{

public static void main(String args[])

{

DataBase db;
db = new DataBase("cecit.unicid.br","POO2007","alunopoo","12345");
	
	db.setMsgOn();
	db.Connect();
	
	ResultSet rs = db.query("Select * from Nomes");
	
	try 
	{
		while(rs.next())
		{
			int i,qtde;
			qtde = rs.getInt("qtdeAmigos");
			System.out.print("Pessoa: "+rs.getString("nome")+" com " + qtde + " amigos: [");
			for(i=1;i<=qtde;i++)
			{
				System.out.print(rs.getString("amigo"+i)+" ");
			}
			System.out.println("]");
		}
		db.close();
	}
	catch(SQLException e) 
	{
		//Erro
		System.out.println(e.getMessage()); 
	}		
	
	
}

}

ziegfried

Você chama o banco de dados da mesma maneira que foi chamado na classe Exemplo:

DataBase db = new DataBase("cecit.unicid.br", "POO2007", "alunopoo", "12345");
db.setMsgOn();
db.Connect();

//Querys...
//Querys...

try {
    //Pegando valores do ResultSet
} catch (SQLException e) {
    e.printStackTrace();
}

db.close();
db.setMsgOff();

Era essa a sua dúvida?

Boa sorte!

C

mais ou menos … ainda estou sem entender …

C

a verdade é que não entendo ainda muito de JAVA e não sei por onde inciar …

ziegfried

O que você já sabe de Java?

C

muito pouco … aprendi a criar por enquanto algumas classes … métodos … atribuições … consigo até entender os códigos prontos … mais ainda não sei montar os códigos …
tô completamente perdida … você pode me indicar algum livro ou apostila ?

ViniGodoy

Oi Cristiane! Primeiramente, bem-vinda ao GUJ!

Quando puder, leia esse tópico que vai te mostrar como postar códigos corretamente por aqui e outros recursos do fórum. :wink:

diguix

Oi christiane.di, bem vinda ao mundo java… entendo oq vc diz em relação a esta perdida. Antes de mais nada procure material sobre Orientação a Objetos, pois depois que você começar a entender os consceitos o Java ficará muito mais claro para você.
Em relação a indicar livro… isso é mto relativo a leitura é mto pessoal vá a uma livraria e de uma folheada nos livros pra que vc mesma escolha.
Mas melhor do que livros e de graça, é a nossa grande WEB, você encontrará tudo que precisa. O forúm tmb é uma das melhores opções tmb, pois tem sempre alguem da comunidade disposto a ajudar, por enquanto é só.

Abs’ [] e boa sorte na sua caminhada!

ziegfried

Não é difícil entender sua dificuldade: começando a aprender Java e partir logo pra parte de acesso a banco de dados (JDBC) seria, realmente, difícil. Como disseram, seria bom você reforçar a parte de conceitos de orientação a objetos e então partir pros principais conceitos de Java (operadores, expressões, herança, composição, polimorfismo, etc).

Recomendação de apostila:

Recomendação de livro:
http://www.submarino.com.br/books_productdetails.asp?Query=ProductPage&ProdTypeId=1&ProdId=1074847&ST=SR

Criado 1 de abril de 2007
Ultima resposta 1 de abr. de 2007
Respostas 11
Participantes 4