Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c无法将类型chromium3.Loginuser转换为“bool”_C#_Mysql - Fatal编程技术网

C# c无法将类型chromium3.Loginuser转换为“bool”

C# c无法将类型chromium3.Loginuser转换为“bool”,c#,mysql,C#,Mysql,您好,我正在创建简单登录。当单击按钮1时,它应该验证它,但如果我执行bool r=validate\u login用户,则通过;如果在该按钮上单击r,则i get无法隐式地将类型“chromium3.LoginUser”转换为“bool” 欢迎提供任何建议。谢谢 我尝试过:将bool更改为LoginUser 私有登录用户验证\u登录字符串用户,字符串传递 { db_连接; MySqlCommand cmd=新的MySqlCommand; cmd.CommandText=从表2中选择*,其中use

您好,我正在创建简单登录。当单击按钮1时,它应该验证它,但如果我执行bool r=validate\u login用户,则通过;如果在该按钮上单击r,则i get无法隐式地将类型“chromium3.LoginUser”转换为“bool” 欢迎提供任何建议。谢谢

我尝试过:将bool更改为LoginUser

私有登录用户验证\u登录字符串用户,字符串传递 { db_连接; MySqlCommand cmd=新的MySqlCommand; cmd.CommandText=从表2中选择*,其中username=@user和password=@pass和UserID=@UserID; cmd.Parameters。AddWithValue@user使用者 cmd.Parameters。AddWithValue@pass通过 cmd.Connection=connect; LoginUser usr=新的LoginUser; MySqlDataReader login=cmd.ExecuteReader; 如果登录,请阅读 { usr.UserID=login[UserID].ToString; usr.valid=true; } 返回usr; } 私有无效按钮1\u单击对象发送者,事件参数e { { 字符串user=usertype.Text; 字符串pass=password.Text; 如果用户==| |通过== { MessageBox.Show检测到空字段!请填写所有字段; 回来 } bool r=validate\u login用户,pass;//问题行 如果r { LoginUser usr=新的LoginUser; usr=验证用户,通过; 如果usr有效 { MySqlCommand cmd=新的MySqlCommand; MySqlDataReader=cmd.ExecuteReader; Console.WriteLineString.Format{0},usr.UserID; UserDetails.m_gnUserId=Convert.ToInt32reader[UserID]; } } } }
它应该验证凭据是否正常,并将usersID保存到UserDetails类。

据我所知,此代码可以解决您的问题

private LoginUser validate_login(string user, string pass)
{
    db_connection();
    MySqlCommand cmd = new MySqlCommand();
    cmd.CommandText = "Select * from table2 where username=@user and password=@pass and UserID=@UserID";
    cmd.Parameters.AddWithValue("@user", user);
    cmd.Parameters.AddWithValue("@pass", pass);


    cmd.Connection = connect;
    LoginUser usr = null;
    MySqlDataReader login = cmd.ExecuteReader();

    if (login.Read())
    {
        usr = new LoginUser();
        usr.UserID = login["UserID"].ToString();
        usr.valid = true;
    }
    return usr;
}

private void button1_Click(object sender, EventArgs e)
{
    {
        string user = usertype.Text;
        string pass = password.Text;


        if (user == "" || pass == "")
        {
            MessageBox.Show("Empty Fields Detected ! Please fill up all the fields");
            return;
        }
        var r = validate_login(user, pass); //problem line
        if (r != null)
        {
            if (r.valid)
            {
                MySqlCommand cmd = new MySqlCommand();
                MySqlDataReader reader = cmd.ExecuteReader();
                Console.WriteLine(String.Format("{0}", r.UserID));
                UserDetails.m_gnUserId = Convert.ToInt32(reader["UserID"]);
            }
        }
    }
}

validate_login返回LoginUser实例,而不是布尔值。此外,为什么连续两次调用validate_login?只是一个错误,忘记了删除它。有没有办法解决这个问题?也许我误解了这个问题,但不应该是这样的,只要删除bool和if r部分。永远不要将密码存储为明文salt并对其进行散列。AddWithValue通常也被认为是个坏主意。