C# 获取&;设置MySQL选择

C# 获取&;设置MySQL选择,c#,mysql,get,set,C#,Mysql,Get,Set,我在这里遗漏了什么,似乎主窗体没有从tsDBCon类调用方法,也没有连接到数据库,我需要帮助,我是新手:设置属性,我做错了吗?谢谢 public class tsDBCon { private string _user; private string _pass; public string User { get { retur

我在这里遗漏了什么,似乎主窗体没有从tsDBCon类调用方法,也没有连接到数据库,我需要帮助,我是新手:设置属性,我做错了吗?谢谢

public class tsDBCon
    {
    private string _user;
    private string _pass;

           public string User
           {
               get 
               {
                   return _user;
               }
               set
               {
                   _user = value;
               }
           }

           public string Pass
           {
               get 
               { 
                   return _pass; 
               }
               set
               {
                   _pass = value;
               }
           }


    public void QueryUser()
        {
            tsDBCon get = new tsDBCon();  
            var connSettings = ConfigurationManager.ConnectionStrings["MyDB"];
            {
                string CN = connSettings.ConnectionString;
                MySqlConnection conn = new MySqlConnection(CN);
                MySqlCommand cmd = new MySqlCommand("select * from users where user = @user and pass = @pass", conn);
                cmd.Parameters.AddWithValue("@user", get.User);
                cmd.Parameters.AddWithValue("@pass", get.Pass);
                MySqlDataReader reader = cmd.ExecuteReader();
                conn.Open();
                while (reader.Read())
                {
                    get.User = reader["user"].ToString();
                    get.Pass = reader["pass"].ToString();
                }
            }
        }
    }


     This is the code in Main Form
     tsDBCon ts = new tsDBCon();
     private void GetUser()
     {
      ts.User = txtUser.Text;
      ts.Pass = txtPass.Text;
     }
我在这里遗漏了什么,似乎主要形式不是调用 方法从
tsDBCon
类中删除,但未连接到数据库,我需要 帮助,我是新手:设置属性,我做错了还是怎么了

是的,你做错了几件事

我想验证用户是否输入了正确的用户并通过文本框

您的代码包含几个问题:

  • 当您创建
    IDisposable
    实例(例如
    MySqlConnection
    )时,您需要处理它们。确保这一点的最简单方法是使用块将它们包装在
  • 如果创建对象的本地临时实例(例如,
    tsDBCon get=new tsDBCon();
    ),则在离开所处方法的范围后,分配给其属性的任何值都将消失。除非将其作为函数结果或通过
    ref
    out
    参数返回
要检查用户名/密码组合是否正确,从您提供的代码示例中,您可能需要更改如下内容:

public class tsDBCon
{
    private const string ExistsQuery = "select count(*) from users where user = @user and pass = @pass";

    public tsDBCon(string user, string pass)
    {
        User = user;
        Pass = pass;
    }

    public string User { get; set; }
    public string Pass { get; set; }

    public bool LoginExists()
    {
        var connSettings = ConfigurationManager.ConnectionStrings["MyDB"];
        var CN = connSettings.ConnectionString;

        using (var conn = new MySqlConnection(CN))
        {
            conn.Open();
            using (cmd = new MySqlCommand(ExistsQuery, conn))
            {
                cmd.Parameters.AddWithValue("@user", User);
                cmd.Parameters.AddWithValue("@pass", Pass);
                var count = (int)cmd.ExecuteScalar();
                return count > 0;
            }
        }
    }
}
ts = new tsDBCon(txtUser.Text, txtPass.Text);
userLoginExists = ts.LoginExists();
在你的主要形式中,使用它如下:

public class tsDBCon
{
    private const string ExistsQuery = "select count(*) from users where user = @user and pass = @pass";

    public tsDBCon(string user, string pass)
    {
        User = user;
        Pass = pass;
    }

    public string User { get; set; }
    public string Pass { get; set; }

    public bool LoginExists()
    {
        var connSettings = ConfigurationManager.ConnectionStrings["MyDB"];
        var CN = connSettings.ConnectionString;

        using (var conn = new MySqlConnection(CN))
        {
            conn.Open();
            using (cmd = new MySqlCommand(ExistsQuery, conn))
            {
                cmd.Parameters.AddWithValue("@user", User);
                cmd.Parameters.AddWithValue("@pass", Pass);
                var count = (int)cmd.ExecuteScalar();
                return count > 0;
            }
        }
    }
}
ts = new tsDBCon(txtUser.Text, txtPass.Text);
userLoginExists = ts.LoginExists();
最后一句话:永远不要存储未加密的密码。

我在这里遗漏了什么,似乎主要形式不是调用 方法从
tsDBCon
类中删除,但未连接到数据库,我需要 帮助,我是新手:设置属性,我做错了还是怎么了

是的,你做错了几件事

我想验证用户是否输入了正确的用户并通过文本框

您的代码包含几个问题:

  • 当您创建
    IDisposable
    实例(例如
    MySqlConnection
    )时,您需要处理它们。确保这一点的最简单方法是使用
    块将它们包装在
  • 如果创建对象的本地临时实例(例如,
    tsDBCon get=new tsDBCon();
    ),则在离开所处方法的范围后,分配给其属性的任何值都将消失。除非将其作为函数结果或通过
    ref
    out
    参数返回
要检查用户名/密码组合是否正确,从您提供的代码示例中,您可能需要更改如下内容:

public class tsDBCon
{
    private const string ExistsQuery = "select count(*) from users where user = @user and pass = @pass";

    public tsDBCon(string user, string pass)
    {
        User = user;
        Pass = pass;
    }

    public string User { get; set; }
    public string Pass { get; set; }

    public bool LoginExists()
    {
        var connSettings = ConfigurationManager.ConnectionStrings["MyDB"];
        var CN = connSettings.ConnectionString;

        using (var conn = new MySqlConnection(CN))
        {
            conn.Open();
            using (cmd = new MySqlCommand(ExistsQuery, conn))
            {
                cmd.Parameters.AddWithValue("@user", User);
                cmd.Parameters.AddWithValue("@pass", Pass);
                var count = (int)cmd.ExecuteScalar();
                return count > 0;
            }
        }
    }
}
ts = new tsDBCon(txtUser.Text, txtPass.Text);
userLoginExists = ts.LoginExists();
在你的主要形式中,使用它如下:

public class tsDBCon
{
    private const string ExistsQuery = "select count(*) from users where user = @user and pass = @pass";

    public tsDBCon(string user, string pass)
    {
        User = user;
        Pass = pass;
    }

    public string User { get; set; }
    public string Pass { get; set; }

    public bool LoginExists()
    {
        var connSettings = ConfigurationManager.ConnectionStrings["MyDB"];
        var CN = connSettings.ConnectionString;

        using (var conn = new MySqlConnection(CN))
        {
            conn.Open();
            using (cmd = new MySqlCommand(ExistsQuery, conn))
            {
                cmd.Parameters.AddWithValue("@user", User);
                cmd.Parameters.AddWithValue("@pass", Pass);
                var count = (int)cmd.ExecuteScalar();
                return count > 0;
            }
        }
    }
}
ts = new tsDBCon(txtUser.Text, txtPass.Text);
userLoginExists = ts.LoginExists();
最后一句话:永远不要存储未加密的密码。

我在这里遗漏了什么,似乎主要形式不是调用 方法从
tsDBCon
类中删除,但未连接到数据库,我需要 帮助,我是新手:设置属性,我做错了还是怎么了

是的,你做错了几件事

我想验证用户是否输入了正确的用户并通过文本框

您的代码包含几个问题:

  • 当您创建
    IDisposable
    实例(例如
    MySqlConnection
    )时,您需要处理它们。确保这一点的最简单方法是使用
    块将它们包装在
  • 如果创建对象的本地临时实例(例如,
    tsDBCon get=new tsDBCon();
    ),则在离开所处方法的范围后,分配给其属性的任何值都将消失。除非将其作为函数结果或通过
    ref
    out
    参数返回
要检查用户名/密码组合是否正确,从您提供的代码示例中,您可能需要更改如下内容:

public class tsDBCon
{
    private const string ExistsQuery = "select count(*) from users where user = @user and pass = @pass";

    public tsDBCon(string user, string pass)
    {
        User = user;
        Pass = pass;
    }

    public string User { get; set; }
    public string Pass { get; set; }

    public bool LoginExists()
    {
        var connSettings = ConfigurationManager.ConnectionStrings["MyDB"];
        var CN = connSettings.ConnectionString;

        using (var conn = new MySqlConnection(CN))
        {
            conn.Open();
            using (cmd = new MySqlCommand(ExistsQuery, conn))
            {
                cmd.Parameters.AddWithValue("@user", User);
                cmd.Parameters.AddWithValue("@pass", Pass);
                var count = (int)cmd.ExecuteScalar();
                return count > 0;
            }
        }
    }
}
ts = new tsDBCon(txtUser.Text, txtPass.Text);
userLoginExists = ts.LoginExists();
在你的主要形式中,使用它如下:

public class tsDBCon
{
    private const string ExistsQuery = "select count(*) from users where user = @user and pass = @pass";

    public tsDBCon(string user, string pass)
    {
        User = user;
        Pass = pass;
    }

    public string User { get; set; }
    public string Pass { get; set; }

    public bool LoginExists()
    {
        var connSettings = ConfigurationManager.ConnectionStrings["MyDB"];
        var CN = connSettings.ConnectionString;

        using (var conn = new MySqlConnection(CN))
        {
            conn.Open();
            using (cmd = new MySqlCommand(ExistsQuery, conn))
            {
                cmd.Parameters.AddWithValue("@user", User);
                cmd.Parameters.AddWithValue("@pass", Pass);
                var count = (int)cmd.ExecuteScalar();
                return count > 0;
            }
        }
    }
}
ts = new tsDBCon(txtUser.Text, txtPass.Text);
userLoginExists = ts.LoginExists();
最后一句话:永远不要存储未加密的密码。

我在这里遗漏了什么,似乎主要形式不是调用 方法从
tsDBCon
类中删除,但未连接到数据库,我需要 帮助,我是新手:设置属性,我做错了还是怎么了

是的,你做错了几件事

我想验证用户是否输入了正确的用户并通过文本框

您的代码包含几个问题:

  • 当您创建
    IDisposable
    实例(例如
    MySqlConnection
    )时,您需要处理它们。确保这一点的最简单方法是使用
    块将它们包装在
  • 如果创建对象的本地临时实例(例如,
    tsDBCon get=new tsDBCon();
    ),则在离开所处方法的范围后,分配给其属性的任何值都将消失。除非将其作为函数结果或通过
    ref
    out
    参数返回
要检查用户名/密码组合是否正确,从您提供的代码示例中,您可能需要更改如下内容:

public class tsDBCon
{
    private const string ExistsQuery = "select count(*) from users where user = @user and pass = @pass";

    public tsDBCon(string user, string pass)
    {
        User = user;
        Pass = pass;
    }

    public string User { get; set; }
    public string Pass { get; set; }

    public bool LoginExists()
    {
        var connSettings = ConfigurationManager.ConnectionStrings["MyDB"];
        var CN = connSettings.ConnectionString;

        using (var conn = new MySqlConnection(CN))
        {
            conn.Open();
            using (cmd = new MySqlCommand(ExistsQuery, conn))
            {
                cmd.Parameters.AddWithValue("@user", User);
                cmd.Parameters.AddWithValue("@pass", Pass);
                var count = (int)cmd.ExecuteScalar();
                return count > 0;
            }
        }
    }
}
ts = new tsDBCon(txtUser.Text, txtPass.Text);
userLoginExists = ts.LoginExists();
在你的主要形式中,使用它如下:

public class tsDBCon
{
    private const string ExistsQuery = "select count(*) from users where user = @user and pass = @pass";

    public tsDBCon(string user, string pass)
    {
        User = user;
        Pass = pass;
    }

    public string User { get; set; }
    public string Pass { get; set; }

    public bool LoginExists()
    {
        var connSettings = ConfigurationManager.ConnectionStrings["MyDB"];
        var CN = connSettings.ConnectionString;

        using (var conn = new MySqlConnection(CN))
        {
            conn.Open();
            using (cmd = new MySqlCommand(ExistsQuery, conn))
            {
                cmd.Parameters.AddWithValue("@user", User);
                cmd.Parameters.AddWithValue("@pass", Pass);
                var count = (int)cmd.ExecuteScalar();
                return count > 0;
            }
        }
    }
}
ts = new tsDBCon(txtUser.Text, txtPass.Text);
userLoginExists = ts.LoginExists();

最后一句话:永远不要存储未加密的密码。

您不必使用get。在tsDBCon类中,只需使用属性的名称。@grantwiney好的,我注意到了。RonBeyer先生,你什么意思?get:set不必要吗?这是:get.User=reader[“User”].ToString();应该是User=reader[“User”]。ToString();没有必要使用get。在“用户”或“通过”之前,与您在命令参数中使用它的位置相同。@RonBeyer它起作用了,我如何通过主窗体验证值是否正确,先生?这取决于您的意思,您正在做一些奇怪的事情,传入用户名和密码,然后从数据库中提取出来,所以我不知道你想验证什么,你不必使用get。在tsDBCon类中,只需使用属性的名称。@grantwiney好的,我注意到了。RonBeyer先生,你什么意思?get:set不必要吗?这是:get.User=reade