Jump to content
firefighter

login

Recommended Posts

firefighter

muito boa noite a todos

eu tou a fazer um mini jogo, e falta me so uma pequena grande coisa para o dar como terminado

e essa pequena coisa que falta, é o login...

o meu programa faz acesso a uma base de dados (access), e comsigo inserir, alterar e visualizar dados

mas tou com um pequeno problema com o login...

caso alguem me consiga ajudar, agradecia

cumprimentos

Share this post


Link to post
Share on other sites
firefighter

o problema é que nao consigo fazer login...

so consigo fazer com que o programa faça correctamente o login para o ultimo utilizador inserido...

imaginando que meto os seguintes dados:

1 - Jose

2 - Maria

ele so me faz login se eu meter "Maria"

se meter "Jose" ele diz que ta errado...

se alguem souber de uma forma correcta de login...  :D

Share this post


Link to post
Share on other sites
firefighter

nao sei se ajudará grande coisa, mas o codigo de login que tou a utilizar é o seguinte:

String nomeEscrito = jTextFieldCarregarNomeJogador.getText();

        String passwordEscrita = jPasswordFieldCarregarPasswordJogador.getText();

        String nome = "";

        String password = "";

        int numCarros = 0;

        int numPedestres = 0;

        int numAvioes = 0;

        int dinheiro = 0;

        int totalUnidades = 0;

        double mediaPoderFogo = 0;

        int batalhasFeitas = 0;

        int batalhasGanhas = 0;

        int unidadesDestruidas = 0;

        int unidadesPerdidas = 0;

        int ouroGanho = 0;

        int missao = 0;

        String url = "jdbc:odbc:BDJogo";

        Connection con;

        Statement stmt;

        try {

            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

        } catch(java.lang.ClassNotFoundException e) {

            System.err.print("ClassNotFoundException: ");

            System.err.println(e.getMessage());

        }

        try {

            con = DriverManager.getConnection(url);

            stmt = con.createStatement();

            String nomeTabela = "Jogador";

            ResultSet rs = stmt.executeQuery("select * from "+nomeTabela);

            int numCols = rs.getMetaData().getColumnCount();

            while (rs.next()) {

            nome = rs.getString(1);

                password = rs.getString(2);

                numPedestres = rs.getInt(3);

                numCarros = rs.getInt(4);

                numAvioes = rs.getInt(5);

                dinheiro = rs.getInt(6);

                totalUnidades = rs.getInt(7);

                mediaPoderFogo = rs.getDouble(8 );

                batalhasFeitas = rs.getInt(9);

                batalhasGanhas = rs.getInt(10);

                unidadesDestruidas = rs.getInt(11);

                unidadesPerdidas = rs.getInt(12);

                ouroGanho = rs.getInt(13);

                missao = rs.getInt (14);

                Object dados[] = new Object[]{nome,

                                            };

                }

            stmt.close();

            con.close();

        } catch(SQLException ex) {

            System.err.println("SQLException: " + ex.getMessage());

        }

        if (nomeEscrito.equals(nome)){

            jDialogJogo.setLocationRelativeTo(this);

            jDialogJogo.setVisible(true);

            jDialogCarregarJogo.setVisible(false);

            nomeJogo = nome;

            passwordJogo = password;

            numCarrosJogo = numCarros;

            numPedestresJogo = numPedestres;

            numAvioesJogo = numAvioes;

            totalUnidadesJogo = totalUnidades;

            mediaPoderFogoJogo = mediaPoderFogo;

            dinheiroJogo = dinheiro;

            batalhasFeitasJogo = batalhasFeitas;

            batalhasGanhasJogo = batalhasGanhas;

            unidadesDestruidasJogo = unidadesDestruidas;

            unidadesPerdidasJogo = unidadesPerdidas;

            ouroGanhoJogo = ouroGanho;

            missaoJogo = missao;

            jLabelNomeJogo.setText(nomeJogo);

            jLabelDinheiroJogo.setText(String.valueOf(dinheiroJogo));

            if (totalUnidadesJogo<=0 || dinheiroJogo <=0){

                jDialogPerdeu.setLocationRelativeTo(this);

                jDialogPerdeu.setVisible(true);

                jDialogJogo.setVisible(false);

            }

           

        }

        else{

            jDialogErroLogin.setLocationRelativeTo(this);

            jDialogErroLogin.setVisible(true);

        }

Share this post


Link to post
Share on other sites
M6

Tens um bug de lógica.

Repara que quando vais ler à tabela Jogador, iteras por todos os registos e atribuis à variável nome o valor do registo actual.

Ora, como iteras por todos, no final da iteração essa variável vai ficar com o nome do último registo da tabela, e como fazes o login baseado na comparação do nome escrito com o valor dessa variável, só consegues autenticar o último porque essa variável tem sempre esse valor.

Troca a query para "select * from Jogador where nome = '" + nomeEscrito + "'" e vais obter apenas o registo do utilizador que queres, ou então um recordset vazio porque o jogador indicado não existe no sistema.

Outra coisa, evita fazer concatenação de strings com o operador +, usa o objecto StringBuffer que é mais eficiente.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
firefighter

M6, muito obrigado =D

era mesmo isso que me faltava...so aquele pequeno promenor =O

alterei, e ja ta a funcionar ^^

agora so uns pequenos acertos, e ja funciona tudo correctamente  :cheesygrin:

o proximo programa que fizer vou ter em concideraçao as tuas dicas, obrigado  :D

Share this post


Link to post
Share on other sites
Baderous

Outra coisa, evita fazer concatenação de strings com o operador +, usa o objecto StringBuffer que é mais eficiente.

This class provides an API compatible with StringBuffer, but with no guarantee of synchronization. This class is designed for use as a drop-in replacement for StringBuffer in places where the string buffer was being used by a single thread (as is generally the case). Where possible, it is recommended that this class be used in preference to StringBuffer as it will be faster under most implementations.

StringBuilder

Share this post


Link to post
Share on other sites
newtoncw

Outra coisa, evita fazer concatenação de strings com o operador +, usa o objecto StringBuffer que é mais eficiente.

É, neste caso acho que seria o StringBuilder.

Share this post


Link to post
Share on other sites
M6

E cá está a razão pela qual todos andamos aqui: aprender! :D


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.