C # winforms сохраняет значение UserID в классе - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь сохранить значение UserID в классе после успешного входа в систему. Когда нажимается кнопка входа в систему, она проверяет вход в систему в текстовых полях, используя @user, @ pass.

Моя проблема в том, что я не знаю, как написать программу чтения SQL и сохранить полученный int в классе. Я также не знаю, как написать этот класс.

Мне нужно сохранить его в классе, чтобы я мог использовать его в разных формах, чтобы проверить, в какую учетную запись вошел пользователь. РЕДАКТИРОВАТЬ: Обновлен код из предложений, но я получаю ошибки Изображение ошибки Есть идеи, где я сделал ошибку?

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"]);
                }
            }
        }
    }

Ответы [ 2 ]

1 голос
/ 22 марта 2019
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.
}
0 голосов
/ 22 марта 2019

Один из следующих методов

  1. Создание класса UserDetails со всеми данными, которые вы хотите сохранить

    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. Для хранения значения UserDetails.m_gnUserId = Convert.ToInt32(reader["UserID"]);.

Это сохранение значения будет идти после Console.WriteLine(String.Format("{0}", reader["UserID"])); в вашем button1_click событии.

Получить значение в другой форме int UserId = UserDetails.m_gnUserId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...