Передача информации о зарегистрированном пользователе в другую форму с # mysql

Например, я хочу отображать информацию о зарегистрированном пользователе из базы данных в другой форме, такой как имя и фамилия. У меня не возникло проблем с администратором, потому что для него есть только одна форма или детали. Я попытался передать текст в имени пользователя текстового поля в другую форму, а затем выделил переданный текст, чтобы отобразить другую информацию о нем, но этого не произойдет, вот мой код, кстати.

private void button2_Click(object sender, EventArgs e)
    {
        int i = 0;
        MySqlCommand comm = con.CreateCommand();
        comm.CommandText = "select * from accountinfo where username = @user and pass = @password";
        comm.Parameters.AddWithValue("@user", textBox1.Text);
        comm.Parameters.AddWithValue("@password", textBox2.Text);
        MySqlDataReader myReader;
        con.Open();
        comm.ExecuteNonQuery();
        myReader = comm.ExecuteReader();
        string accountType = string.Empty;
        DataTable dt = new DataTable();
        MySqlDataAdapter da = new MySqlDataAdapter(comm);
        i = Convert.ToInt32(dt.Rows.Count.ToString());

       while (myReader.Read())
       {
            i = i + 1;
            accountType = myReader["accountType"].ToString();
       }
       if (i == 0)
       {
            MessageBox.Show("Wrong username or password!");
       }
       else if (accountType == "admin")
       {
            MessageBox.Show("Welcome admin");
            this.Hide();
            textBox1.Text = string.Empty;
            textBox2.Text = string.Empty;
            Form3 frm3 = new Form3();
            frm3.Show();
       }
       else
       {
            MessageBox.Show("Welcome");
            this.Hide();
           using(var frm4 = new Form4())
           {

               frm4.FirstName = textBox1.Text;
               frm4.ShowDialog();
           }
       }
            con.Close();
    }

и мой код во второй форме

public partial class Form4 : Form
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string CellNo { get; set; }

    public Form4()
    {
        InitializeComponent();
    }

    private void Form4_Load(object sender, EventArgs e)
    {
        tbUser.Text = FirstName;
        try
        {
            string MyConnection2 = "server=localhost;user id=root;database=account;persistsecurityinfo=True;PASSWORD=test123;SslMode=none";
            string Query = "SELECT firstname = '" + tbFN.Text + "' from accountinfo WHERE username = '" + tbUser + "' " ; 
            MySqlConnection MyConn2 = new MySqlConnection(MyConnection2);
            MySqlCommand MyCommand2 = new MySqlCommand(Query, MyConn2);
            MySqlDataAdapter MyAdapter = new MySqlDataAdapter();
            MyAdapter.SelectCommand = MyCommand2;
            DataTable dTable = new DataTable();
            MyAdapter.Fill(dTable);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        } 

    }
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
211
1

Ответы 1

Информация о зарегистрированном пользователе статична для всего вашего приложения, поэтому вы сможете получить к ней доступ из любого места.

В качестве решения создайте класс пользователя

public class User {
    username, full name ...
}

Создать внедренный класс ApplicationContext

public class ApplicationContext
{
   private ApplicationContext(){
   }

   public User UserInfo {get;}

   public static ApplicationContext Current{get;}

   public static Init(User userInfo)
   {
       if (Current != null)
           throw new Exception("Context already initialized");

       Current = new ApplicationContext(){
           UserInfo = userInfo
       }
   }
}

После входа в систему позвоните

ApplicationContext.Init(userInfo);

Везде, где нужен информационный звонок пользователя

ApplicationContext.Current.UserInfo

как мне получить информацию о пользователе из базы данных, если я должен добавить запрос в публичный класс пользователя?

Magilou 17.05.2018 11:13

Вместо этого я бы запросил БД в форме входа и сохранил в контексте четкие данные без зависимости от БД.

Arsen Mkrtchyan 17.05.2018 11:21

Другие вопросы по теме