如何制作登录表单并重定向到单独的Windows窗体

时间:2017-01-18 07:17:48

标签: c# mysql server

我无法将这些布尔值分成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)
        {

        }
    }
    }

1 个答案:

答案 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
        }
    }
相关问题