登录时获取特定列的值(C#Mysql)

此刻我正在尝试登录。我看了一些视频,发现了一个好方法。每个用户都有一个ID,用户名和密码。我想获取刚刚登录的用户的ID,并将其保存在Integer中。我也用ExecuteReader进行了尝试,但是得到了一个异常( MySql.Data.MySqlClient.MySqlException )。

我当前的代码是:

 try
            {
                if (sqlCon.State == ConnectionState.Closed)
                {
                    sqlCon.Open();
                }
                string query = "SELECT COUNT(1) FROM Users_Table WHERE username=@username AND Password=@Password;";
                mysqlcommand sqlCmd = new mysqlcommand(query,sqlCon);
                sqlCmd.Parameters.AddWithValue("@username",maintxtbox1.Text);
                sqlCmd.Parameters.AddWithValue("@Password",Hashed_Password);
                int count = Convert.ToInt32(sqlCmd.ExecuteScalar());
                if (count == 1)
                {
                    //Login correct
                }
                else
                {
                    //Login incorrect
                }
            }
            catch
            {
                //Exception
            }
            finally
            {
                sqlCon.Close();
            }

尝试使用ExecuteReader:

try
            {
                if (sqlCon.State == ConnectionState.Closed)
                {
                    sqlCon.Open();
                }
                string query = "SELECT id,username,Password FROM Users_Table WHERE username=@username AND Password=@Password;";
                mysqlcommand sqlCmd = new mysqlcommand(query,Hashed_Password);

                MySqlDataReader datareader = sqlCmd.ExecuteReader();

                if (datareader.HasRows)
                {
                    MessageBox.Show("Test: " + datareader.GetString("id"));
                }
                else
                {
                    //Login incorrect
                }
            }
            catch
            {
                //Exception
            }
            finally
            {
                sqlCon.Close();
            }

我希望有人能帮助我。预先谢谢你。

cs52012301 回答:登录时获取特定列的值(C#Mysql)

尝试并使用 Read 方法:

mysql-python

编辑: 为了充分利用和处置资源,我建议在 using 块(例如e.j.)内使用MySqlDataReader。

mysql-connector-python
,

我自己找到了解决问题的方法。我忘记了while(datareader.Read())查询中的ìf(datareader.HasRows)。这是我的工作代码:

try
            {
                if (sqlCon.State == ConnectionState.Closed)
                {
                    sqlCon.Open();
                }
                string query = "SELECT * FROM Users_Table WHERE username=@Username AND password=@Password;";
                MySqlCommand sqlCmd = new MySqlCommand(query,sqlCon);
                sqlCmd.Parameters.AddWithValue("@Username",maintxtbox1.Text);
                sqlCmd.Parameters.AddWithValue("@Password",Hashed_Password);
                MySqlDataReader datareader = sqlCmd.ExecuteReader();
                if (datareader.HasRows)
                {
                    while (datareader.Read())
                    {
                        UserID = datareader.GetInt32("id");
                    }
                }
                else
                {
                    //Incorrect Password
                }

            }
            catch
            {
                //Error
            }
            finally
            {
                sqlCon.Close();
            }
本文链接:https://www.f2er.com/2355558.html

大家都在问