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

问题描述 投票:0回答:1

我目前正在尝试进行登录。我看了一些视频,找到了一个好方法。每个用户都有一个id,用户名和密码。我想得到刚刚登录的用户的id,并将其保存为一个整数。我也试过用一个 ExecuteReader 但我得到一个Exception()。MySql.Data.MySqlClient.MySqlException异常。).

我现在的Code是

 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, sqlCon);
                sqlCmd.Parameters.AddWithValue("@Username", maintxtbox1.Text);
                sqlCmd.Parameters.AddWithValue("@Password", Hashed_Password);

                MySqlDataReader datareader = sqlCmd.ExecuteReader();

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

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

c# mysql authentication datareader read-data
1个回答
0
投票

尝试使用 阅览 方法。

if(datareader.Read()){
    MessageBox.Show("Test: "+datareader.GetString(0));
}

EDIT。为了更好地利用和处理资源,我建议在MySqlDataReader里面使用 使用 Block, E. J.

using(MySqlDataReader reader = new sqlCmd.ExecuteReader()){
    if(reader.Read()){
        MessageBox.Show("Test: "+reader.GetString(0));
    }
}

0
投票

我自己找到了解决我问题的方法。我忘了 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();
            }
© www.soinside.com 2019 - 2024. All rights reserved.