c# - 我将如何使用数据库创建登录表单以进行检查?

标签 c# mysql

我有一个数据库,其中有一个名为 person 的表,其中有两行分别名为 personIDfirstName

现在,我有一个包含 2 个文本框的表单,要求输入 ID 和名字。

问题是,如果 ID 和 firstName 来自同一条记录,我不知道如何检查数据库,如果记录匹配,我不知道如何将你带到另一个名为 admin 的表单不要只是给出错误标签。

我希望得到任何帮助,谢谢。

编辑:这是目前的代码,connection already open, connection must be open 错误

private void btnLoginScreen_Click(object sender, EventArgs e)
{
    {
        switch (dbAuth(txtAdminLogID.Text, txtAdminLogName.Text))
        {
            case true:
                //Open Admin form
                break;
            case false:
                //Show Errorlabel here
                break;
            case null:
                //An error occured while fetching data
                break;
            default:
                break;
        }
    }
}

public bool? dbAuth(string personID, string firstName)
{
    try
    {
        MySqlCommand command = new MySqlCommand();
        command.CommandText = "SELECT * FROM person";
        MySqlDataReader Reader;
        conn.Open();
        Reader = command.ExecuteReader();
        while (Reader.Read())
        {
            if (Reader[0].ToString() == personID) //first check if the ID is equal
            {
                if (Reader[1].ToString() == firstName) //if ID is equal, check if firstName is equal
                {
                    conn.Close();
                    return true;
                }
            }
        }
        conn.Close();
        return false;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
        return null;
    }
}

编辑:这是我的连接字符串:

string connstring = "server=localhost;user Id=root;database=collegesystem;Convert Zero Datetime=True ";
        MySqlConnection conn;

最佳答案

这就是我的做法(使用 MySQL-Connector):

public bool? Authenticate(string personID, string firstName)
{
    try
    {
        MySqlCommand command = connection.CreateCommand();
        command.CommandText = "SELECT * FROM yourTable";
        MySqlDataReader Reader;
        connection.Open();
        Reader = command.ExecuteReader();
        while (Reader.Read())
        {
            if (Reader[0].ToString() == personID) //first check if the ID is equal
            {
                if (Reader[1].ToString() == firstName) //if ID is equal, check if firstName is equal
                {
                    connection.Close();
                    return true; 
                }
            }
        }
        connection.Close();
        return false;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
        return null;
    }
}

在您的表单中,登录按钮所在的位置使用以下代码:

private void MySQL_Auth_button_Click(object sender, EventArgs e)
        {
        switch (dbAuth.AuthenticatePlain(personID_textBox.Text, firstName_textBox.Text))
                {
                    case true:
                        //Open Admin form
                        break;
                    case false:
                        //Show Errorlabel here
                        break;
                    case null:
                        //An error occured while fetching data
                        break;
                    default:
                        break;
                }
         }

关于c# - 我将如何使用数据库创建登录表单以进行检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802878/

相关文章:

c# - 在 Startup 中合并 aspnetcore 项目,而不复制服务注册或管道

mysql - MySQL char 列大小限制是如何计算的?

mysql - 如何在MySQL中通过查询从每个帖子的照片表中选择一张照片

c# - Devexpress ASPxGridView GetSelectedFieldValues 无法获取值

c# - 如何从 EF LINQ 查询调用数据库函数?

mysql - 获取行总和并保留每行数据

php - 从 'submit' 按钮在 PHP 中插入 mysql 值无法按预期工作

php - 如何使用 JavaScript 永久编辑 HTML 文档?

c# - 单独项目下的 ASP.NET Web API 帮助页面

c# - 在整个大型 Web 应用程序中一致地格式化 C# 中的字符串