ByFive
ByFive

Reputation: 13

C# winforms save UserID value to class

I'm trying to save UserID value to a class after an successful login. When the login button is clicked, it validates the login into in text boxes using the @user, @pass.

My problem is that I do not know how to write a sql reader and save the resulting int to a class. I also do not know how to write that class.

I need to save it to a class so I can use it on different forms to check what account the user is logged into. EDIT: Updated code from suggestions but i get errors Error picture any ideas where i did a mistake?

private LoginUser validate_login(string user, string pass)
    {
        db_connection();
        MySqlCommand cmd = new MySqlCommand();
        cmd.CommandText = "Select * from table2 where username=@user and password=@pass";
        cmd.Parameters.AddWithValue("@user", user);
        cmd.Parameters.AddWithValue("@pass", pass);


        cmd.Connection = connect;
    LoginUser usr = new LoginUser();
    MySqlDataReader login = cmd.ExecuteReader();

     while(login.Read())
     {
             connect.Close();
             usr.UserID = login["UserID"];
             usr.valid = true;
     }    
     return usr;         
}



    private void button1_Click(object sender, EventArgs e)
    {
        {
            string user = usertype.Text;
            string pass = password.Text;


            if (user == "" || pass == "")
            {
                MessageBox.Show("Empty Fields Detected ! Please fill up all the fields");
                return;
            }
            bool r = validate_login(user, pass);
            if (r)
            {
                LoginUser usr = new LoginUser();
                usr = validate_login(user, pass);
                if (usr.valid)
                {
                    Console.WriteLine(String.Format("{0}", usr.UserID));
                    UserDetails.m_gnUserId = Convert.ToInt32(reader["UserID"]);
                }
            }
        }
    }

Upvotes: 0

Views: 647

Answers (2)

SH7
SH7

Reputation: 752

One of the method is as follow

  1. Create a class UserDetails with all the data you want to store

    public static class UserDetails
    {
        public static int m_gnUserId {get;set;} 
        //Add other variables which you want to store and use across different forms
    }
    
  2. To Store Value UserDetails.m_gnUserId = Convert.ToInt32(reader["UserID"]); .

This storing of Value will go after Console.WriteLine(String.Format("{0}", reader["UserID"])); in your button1_click event.

  1. To get the value on other form int UserId = UserDetails.m_gnUserId;

Upvotes: 0

AntKoki
AntKoki

Reputation: 81

public partial class Form1 : Form
{
    private LoginUser validate_login(string user, string pass)
    {
         ...
         LoginUser usr = new LoginUser();
         MySqlDataReader login = cmd.ExecuteReader();

         while(login.Read())
         {
                 connect.Close();
                 usr.UserID = login["UserID"];
                 usr.valid = true;
         }    
         return usr;         
    }

    private void button1_Click(object sender, EventArgs e)
    {
        ...

        LoginUser usr = new LoginUser();
        usr = validate_login(user, pass);
        if (usr.valid)
        {
           Console.WriteLine(String.Format("{0}", usr.UserID));
        }
    }
}

public class LoginUser
{
    public Bool valid = false;
    public String UserID = "";
    // You can have more column name up to matching with your table column.
}

Upvotes: 1

Related Questions