我无法将这些布尔值分成3个窗口形式。我不能将这些东西分成3个角色(Admin,Secretary和Treasurer。),因为这些是布尔值。如何解决这些问题?请帮我解决这个问题。谢谢。
frm_Login:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace BarangayLigasRecordingSystemWEBPROG4
{
public partial class frm_Login : Form
{
private string conn;
private MySqlConnection connect;
public frm_Login()
{
InitializeComponent();
}
private void db_connection()
{
try
{
conn = "Server=localhost;Database=brgyligasrecordingsystem;Uid=root;Pwd=1234;";
connect = new MySqlConnection(conn);
connect.Open();
}
catch (MySqlException e)
{
throw;
}
}
private bool validate_login(string user, string pass)
{
db_connection();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "Select * from loginsignupdata where username=@username and password=@password";
cmd.Parameters.AddWithValue("@username", user);
cmd.Parameters.AddWithValue("@password", pass);
cmd.Connection = connect;
MySqlDataReader login = cmd.ExecuteReader();
if (login.Read())
{
connect.Close();
return true;
}
else
{
connect.Close();
return false;
}
}
private void button1_Click(object sender, EventArgs e)
{
string user = tbx_username.Text;
string pass = tbx_password.Text;
if (user == "" || pass == "")
{
MessageBox.Show("Please fill up this field.", "Empty Fields!");
return;
}
bool r = validate_login(user, pass);
if (r)
{
MessageBox.Show("OK!");
}
else
MessageBox.Show("The username or password is incorrect!", "Wrong Credentials");
}
private void tbx_password_TextChanged(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
frm_Signup f2 = new frm_Signup();
Hide();
f2.ShowDialog();
Close();
}
private void Login_Load(object sender, EventArgs e)
{
}
}
}
答案 0 :(得分:0)
如果使用可以为空的布尔值,则布尔值限制为两个值(true或false)或三个值
bool b1 = true;
bool b2 = false;
bool? b3 = null;
另一方面,枚举可以包含更多值,并且可以使用整数访问。以下是使用枚举的示例:
public class Program
{
public enum Roles
{
Admin,
Secretary,
Treasurer
}
public class User
{
public Roles Role { get; set; }
}
public static void Main(string[] args)
{
User bob = new User(){ Role = Roles.Admin };
switch (bob.Role)
{
case Roles.Admin:
Console.WriteLine("This user is an Admin (use the admin login)");
break;
case Roles.Secretary:
Console.WriteLine("This user is a Secretary (use the secretary login)");
break;
case Roles.Treasurer:
Console.WriteLine("This user is a Treasurer (use the treasurer login)");
break;
}
}
}
枚举是一种类型,因此可以在整个程序中使用,而不会明确地使其成为静态
private Roles validate_login(string user, string pass)
{
db_connection();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "Select * from loginsignupdata where username=@username and password=@password";
cmd.Parameters.AddWithValue("@username", user);
cmd.Parameters.AddWithValue("@password", pass);
cmd.Connection = connect;
MySqlDataReader login = cmd.ExecuteReader();
if (login.Read())
{
connect.Close();
// return true;
// Instead of returning true, return the role of the user
}
else
{
connect.Close();
// return false;
// Instead of returning false, throw an exception, or reserve an enum for failed logins
}
}