Winforms 如何在C+中全局保存用户数据+;Windows窗体应用程序

Winforms 如何在C+中全局保存用户数据+;Windows窗体应用程序,winforms,c++-cli,Winforms,C++ Cli,下面是帮助登录用户的按钮处理程序,我想将用户数据检索到一个全局数据结构中,该结构将在整个程序中使用,这与PHP Web会话有关。如何使用下面的代码实现和检索 using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using name

下面是帮助登录用户的按钮处理程序,我想将用户数据检索到一个全局数据结构中,该结构将在整个程序中使用,这与PHP Web会话有关。如何使用下面的代码实现和检索

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace MySql::Data::MySqlClient;
private: System::Void loginBtn_Click(System::Object^  sender, System::EventArgs^  e) {
    String^ email = this->email->Text;
    String^ password = this->password->Text;

    if (email == " " || password == "") {
        MessageBox::Show("Please enter all fields to proceed");
    }
    else {
        String^ connString = L"datasource=127.0.0.1;port=3306;username=root;password=";
        MySqlConnection^ connDb = gcnew MySqlConnection(connString);
        MySqlCommand^ cmdDb = gcnew MySqlCommand("select * from clocking.users where EMAIL = '" + email + "' AND PASSWORD = '" + password + "' ", connDb);
        MySqlDataReader^ myReader;
        try {

            connDb->Open();
            myReader = cmdDb->ExecuteReader();
            int row = 0;
            while (myReader->Read()) {
                row = row + 1;
            }

            if(row == 1){
                MessageBox::Show("Welcome on board! Auth Successful");
            }
            else {
                MessageBox::Show("Incorrect Email/Password Combination. Try again!");
            }
        }
        catch (Exception^ex) {
            MessageBox::Show("Error Connecting to System Database!");
        }
    }

    
}


您好Lewa Bammy Stephen,您的代码很好,您只需添加一个类,在该类中使用适当的get和set方法保存用户数据,我将在下面向您展示

public bool Login(string Nombre, string Contraseña)
{
    using (var conection = Getconection())
    {
        conection.Open();
        using (var command = GetSqlCommand())
        {
            command.Connection = conection;
            command.CommandText = "select * from Usuario where Usuario = @Usuario and claveusu =@claveusu";
            command.Parameters.AddWithValue("@Usuario", Nombre);
            command.Parameters.AddWithValue("@claveusu", Contraseña);
            command.CommandType = CommandType.Text;
            SqlDataReader reader = command.ExecuteReader();
            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    Datoscahe.Iduser = reader.GetInt32(0);
                    Datoscahe.Name = reader.GetString(1);

                     Obtenerrol();


                }
                return true;

            }
            else
                return false;
        }
    }
}
如果仔细查看while条件,我会告诉它调用数据类cahe,这样它就可以保存启动会话的人的信息,指示会话的类型及其在数据库中的位置

namespace Capadatos.SQLserver
{
    public static class Datoscahe 
    {   
        public static int Idusuario { get; set; }
        public static string Nombre { get; set; }
        public static string Apellidos { get; set; }
        public static string Sexo { get; set; }
        public static DateTime Fecha_nacimiento { get; set; }
        public static string Num_documento { get; set; }
        public static string Direccion { get; set; }
        public static string Telefono { get; set; }
        public static string Email { get; set; }
        public static int Idrol { get; set; }
        public static string Usuario { get; set; }
        public static string Password { get; set; }
    }
}

这是我保存用户数据的课堂

非常感谢您的翻译。我可以全局调用get/set,对吗?是的,如果您将其设置为静态,则可以从任何位置调用它,而无需创建实例