Winforms 如何在C+中全局保存用户数据+;Windows窗体应用程序
下面是帮助登录用户的按钮处理程序,我想将用户数据检索到一个全局数据结构中,该结构将在整个程序中使用,这与PHP Web会话有关。如何使用下面的代码实现和检索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
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,对吗?是的,如果您将其设置为静态,则可以从任何位置调用它,而无需创建实例