0
votes

Comment obtenir un identifiant d'un utilisateur pour voirmodel? [Formulaire de connexion]

Alors je travaille sur ce projet. Fondamentalement, j'essaie de faire une forme de connexion. Et je dois obtenir une pièce d'identité qui se trouve à l'intérieur de la table 'utilisateurs', mais je ne sais pas comment? Quelqu'un peut-il me montrer comment c'est fait?

J'ai essayé de le changer de bool à int et d'identifiant de retour. xxx

Il doit écrire l'ID utilisateur à une viewModel, afin que je puisse les utiliser dans mes autres formes.


0 commentaires

3 Réponses :


0
votes

Je ne suis pas sûr de ce que le 'Count (1)' dans l'instruction SELECT est certainement, cela doit sûrement être «ID» si vous espérez recevoir un ID d'un enregistrement où «@Loginuere» et '@LoginPass 'Faites correspondre ceux donnés.


2 commentaires

Oui Voir ceci est le problème, je n'ai pas d'identifiant, j'ai un formulaire de connexion avec 2 boîtes de texte que l'un est loginusername autre est loginpassword, donc je dois les utiliser pour obtenir l'identifiant de l'utilisateur et par ID, je dois pouvoir obtenir le prénom, Nom ... etc. Alors, que dois-je remplacer compter (1) avec?


Si vous souhaitez obtenir tous les champs d'un certain enregistrement, utilisez le caractère '*' au lieu de 'compter (1)'. En outre, votre champ «ID» de votre base de données est un incrémentation automatique, une valeur sera donc produite une fois qu'un enregistrement est ajouté, les enregistrements ont donc un «ID» dans la base de données. Pour obtenir cet identifiant, changez simplement votre instruction "CMDCommand" sur "Sélectionner une pièce d'identité à partir des utilisateurs où loginusername = @ loginuer et loginpassword = @ loginpass '



0
votes

Donnez cela un essai. Étant donné que comptent (1) code> retournera le nombre de correspondances, s'il n'y a pas de doublons, vous obtiendrez toujours 1 ou 0. Vous voulez que l'ID réel de l'utilisateur.

changer le type de retour à int code> au lieu de bool code> et modifier comptez (1) code> sur le nom de la colonne réelle pour l'ID utilisateur, vous retournez cette valeur. P >

if (test > 0)
                {
                    return test;
                }
                else
                {
                    return 0
                }


3 commentaires

Oui, cela semble fonctionner, mais comment puis-je l'obtenir à ma forme principale? LOGINVIEWMODEL utilisateurs = nouveau loginviewModel (); lbluserid.text = convert.tostring (utilisateurs.id); // Cela me donne un problème que Lbluserid était NULL. une idée de la manière de résoudre ce problème?


Je pense que vous avez besoin de quelque chose comme cette approche lbluserid.text = users.id.tostring ()


La routine loginuer (loginViewModel UserLogin) renvoie l'ID utilisateur réel. Donc, cela pourrait être la solution lbluserid.text = loginuer (loginViewModel UserLogin)



0
votes

Modifiez d'abord votre SQL que vous utilisez dans votre méthode. Si vous comptez les lignes, vous ne pouvez pas obtenir l'identifiant de l'utilisateur (au moins je ne pense pas que vous puissiez) Donc, faites votre SQL comme ceci:

 public bool LoginUser(LoginViewmodel userLogin, out string UserId)
        {
            var cmdCommand = "select count(1) from users WHERE loginUsername=@LOGINUSER AND loginPassword=@LOGINPASS;";
            OpenConnection();
            MySqlDataAdapter dtReader = new MySqlDataAdapter(cmdCommand, con);
            dtReader.SelectCommand.Parameters.AddWithValue("@LOGINUSER", userLogin.LoginUsername);
            dtReader.SelectCommand.Parameters.AddWithValue("@LOGINPASS", userLogin.LoginPassword);
            DataTable dt = new DataTable();
            dtReader.Fill(dt);
            if (dt.Rows.Count == 1)
            {
                UserId = dt.Rows[0]["Id"].ToString();
                return true;
            }
            else
            {
                throw new BadLoginCredentialsException();
            }
        }


2 commentaires

userid = dt.Rows [0] ["ID"]. Tostring (); n'existe pas comme il n'y aura qu'un compte.


J'ai changé ma commande SQL, maintenant, il retournera la ligne entière et que l'OP peut simplement choisir la colonne d'identification à l'intérieur, ou OP peut modifier la colonne ID directement si OP ne nécessite pas d'autres colonnes.