Olá!
Estou toda enrolada com Java…
Não consigo sair da tela de login, tá um sufoco!!
Minha duvida é a seguinte:
Possuo tres tabelas:
USUARIO (LOGIN, SENHA, NOME)
PROGRAMA (ID, DESCRICAO)
USUARIO_PROGRAMA (LOGIN, ID_PROGRAMA)
Cada usuário pode ter acesso a vários programas.
Eu não estou sabendo construir as classes, nao sei se realmente é necessário construí-las, acredito que sim.
Estava pensando em criar três arquivos java, um para cada tabela. Ficaria assim:
[code]public class UsuarioPrograma {
private Connection connection;
private Usuario usuario;
private Programa programa;
(…)
}
public class Programa {
private Connection connection;
private String id;
private String descricao;
(…)
}
public class Usuario{
private Connection connection;
private String login;
private String senha;
private String nome;
(…)
}[/code]
Isto é certo? Parei por aí pq nao sei onde fazer a consulta.
Alguém poderia me explicar? Tá muito confuso pra mim!!
Entendendo isto já é um gnde passo para o restante.
Obrigada,
Luciana
Olá Luciana, qual o banco de dados que vc está usando??
Estou usando o postgres.
Influenciaria em alguma coisa?
Luciana
Então, ae está um exemplo para você se conectar ao banco de dados. Ae vc vê quais consultas vc vai fazer e como vc vai usar o resultado. Mas para que você consiga se conectar ao banco, vc teria que entrar no site do postgres e baixar o driver para a conexão jdbc
public class UsuarioPrograma
{
private Connection connection;
private Usuario usuario;
private Programa programa;
//url para a conexão com o banco de dados
private String url = "jdbc:postgresql:nome da base";
private Statement stmt;
private ResultSet resultado;
public consultaUsuario (String nome, string senha)
{
try
{
//aqui voce carrega o driver para a conexao
Class.forName("org.postgresql.Driver");
}
catch (java.lang.ClassNotFoundException e)
{
System.out.println("Erro ao criar a conexão com o banco de dados: " + e.getMessage());
}
try
{
//aqui vc cria a conexão com o banco de dados
this.connection = DriverManager.getConnection(this.url, "nome do usuario do banco", "senha para a conexao no banco");
//associa a conexão ao statement (tornando possível fazer consultas ou inserção no banco)
this.stmt = Conexao.createStatement();
//consulta sql
String sql = "Select * from usuarios"; //por exemplo
//executa a consulta acima
this.resultado = stmt.executeQuery (sql);
//aqui, vc faz o ponteiro do resultset ir para o início, e enquanto houver registro
//no resultset, vc continua no loop até acabar os registros
while (resultado.next())
{
//faz oq vc quiser com o valor retornado do banco
}
}
catch (SQLException e)
{
System.out.println("Erro ao conectar no banco de dados ou na consulta: " + e.getMessage());
}
}
}
Qualquer dúvida, vá perguntado…
[]'s
Fiz o que disse e esta parte esta correta.
Tenho outras dúvidas:
* Na classe LoginDisplay.java tenho o seguinte codigo:
public class LoginDisplay extends JFrame{
.....
public LoginDisplay(){
.....
btnOK.addMouseListener (new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (UsuarioPrograma.EhUsuario("REL_CAIXA", txtLogin.getText().trim(), senha)){
System.out.println("É usuário"); }
else
JOptionPane.showMessageDialog(null,"Usuário não encontrado","Login", JOptionPane.WARNING_MESSAGE);
});
.....
}}
[i]Gostaria que o programa, ao saber que a pessoa é usuária do sistema, feche a tela de login e exiba uma outra tela, a do sistema propriamente dito. Esta tela deveria ser chamada pelo [b]LoginDisplay.java[/b] ou haveria uma outra maneira mais correta/ elegante de se fazer? Pensei em retornar um booleano para a classe principal:[/i]
public class Caixa {
public Caixa() {
LoginDisplay login = new LoginDisplay();
if (login.qqCoisa) {
CaixaDisplay Cx = new CaixaDisplay();
}
}
public static void main(String[] args) {
Caixa cx = new Caixa();
}
}
Mas como fazer isso?