C# MySQL异步-我如何使用它?
我尝试运行自己的TCP应用程序,现在我将检查用户是否退出 我的问题是:如何使用mySQL异步C# MySQL异步-我如何使用它?,c#,mysql,asynchronous,C#,Mysql,Asynchronous,我尝试运行自己的TCP应用程序,现在我将检查用户是否退出 我的问题是:如何使用mySQL异步 public static bool CheckUserLogin(string Username,string Password){ try{ if(string.IsNullOrEmpty(Username) || string.IsNullOrEmpty(Password)){ return false; } if (
public static bool CheckUserLogin(string Username,string Password){
try{
if(string.IsNullOrEmpty(Username) || string.IsNullOrEmpty(Password)){ return false; }
if (!System.Text.RegularExpressions.Regex.IsMatch(Username, "^[a-zA-Z0-9\x20]+$")) { return false; }
if (!System.Text.RegularExpressions.Regex.IsMatch(Password, "^[a-zA-Z0-9\x20]+$")) { return false; }
bool UserExit = false;
DataBase_Connection.DB_Conn.OpenAsync();
try{
string c_query = "SELECT COUNT(*) FROM `KoN_Account` WHERE BINARY `AccountName` = @U_Name AND `HashPass` = @P_Pass LIMIT 1;";
using (MySqlCommand CU_cmd = new MySqlCommand(c_query, db_Conn)){
CU_cmd.Parameters.AddWithValue("@U_Name", Username);
CU_cmd.Parameters.AddWithValue("@P_Pass", Password);
var count = CU_cmd.ExecuteScalar();
UserExit = Convert.ToBoolean(count);
}
}
catch{
}
DataBase_Connection.DB_Conn.CloseAsync();
return UserExit;
}
catch (Exception ex){
LoginConsole.WriteConsoleLoginParams(System.ConsoleColor.Red, "ERROR CheckUserLogin", ex.ToString() + "\nFailed to connect to the database (server shutdown...)");
}
return false;
}
我的问题是我做的对吗?使用OpenAsync和CloseAsync
另外,我如何以异步方式使用:ExecuteScalar
感谢您的帮助为了使用异步版本,您需要将方法从返回bool更改为返回任务,并添加异步修饰符,然后您需要使用异步后缀方法并等待它们
我还将在finally块中执行DB_Conn.CloseAsync,并删除空捕获,因为您已经有了某种形式的基本错误处理
请注意,您只能在使用C6和以上时使用“等待”和“最终”
因此,您的示例如下所示:
public static async Task<bool> CheckUserLogin(string Username, string Password)
{
try
{
if (string.IsNullOrEmpty(Username) || string.IsNullOrEmpty(Password)) { return false; }
if (!System.Text.RegularExpressions.Regex.IsMatch(Username, "^[a-zA-Z0-9\x20]+$")) { return false; }
if (!System.Text.RegularExpressions.Regex.IsMatch(Password, "^[a-zA-Z0-9\x20]+$")) { return false; }
bool UserExit = false;
await DataBase_Connection.DB_Conn.OpenAsync();
try
{
string c_query = "SELECT COUNT(*) FROM `KoN_Account` WHERE BINARY `AccountName` = @U_Name AND `HashPass` = @P_Pass LIMIT 1;";
using (MySqlCommand CU_cmd = new MySqlCommand(c_query, db_Conn))
{
CU_cmd.Parameters.AddWithValue("@U_Name", Username);
CU_cmd.Parameters.AddWithValue("@P_Pass", Password);
var count = await CU_cmd.ExecuteScalarAsync();
UserExit = Convert.ToBoolean(count);
}
}
finally
{
await DataBase_Connection.DB_Conn.CloseAsync();
}
return UserExit;
}
catch (Exception ex)
{
LoginConsole.WriteConsoleLoginParams(System.ConsoleColor.Red, "ERROR CheckUserLogin", ex.ToString() + "\nFailed to connect to the database (server shutdown...)");
}
return false;
}
为什么要执行异步登录?未经验证的用户还可以做什么?这是针对TCP服务器的。这么多用户将连接到他。这是一个很好的解决方案。