登录时获取特定列的值 (C# Mysql)
Get Value of specific Column while Login (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, 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();
}
我希望有人能帮助我。提前谢谢你。
尝试使用读取方法:
if(datareader.Read()){
MessageBox.Show("Test: "+datareader.GetString(0));
}
编辑:
为了充分利用和处置资源,我建议在 using 块中使用 MySqlDataReader,e.j.
using(MySqlDataReader reader = new sqlCmd.ExecuteReader()){
if(reader.Read()){
MessageBox.Show("Test: "+reader.GetString(0));
}
}
我自己找到了解决问题的方法。我忘记了 ìf(datareader.HasRows)
查询中的 while(datareader.Read())
。这是我的工作代码:
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();
}
我正在尝试登录。我看了一些视频,找到了一个好方法。每个用户都有一个 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, 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();
}
我希望有人能帮助我。提前谢谢你。
尝试使用读取方法:
if(datareader.Read()){
MessageBox.Show("Test: "+datareader.GetString(0));
}
编辑: 为了充分利用和处置资源,我建议在 using 块中使用 MySqlDataReader,e.j.
using(MySqlDataReader reader = new sqlCmd.ExecuteReader()){
if(reader.Read()){
MessageBox.Show("Test: "+reader.GetString(0));
}
}
我自己找到了解决问题的方法。我忘记了 ìf(datareader.HasRows)
查询中的 while(datareader.Read())
。这是我的工作代码:
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();
}