是否可以以这种方式重载方法
本文关键字:重载 方法 方式 是否 | 更新日期: 2023-09-27 18:31:20
我试图允许人们使用他们的UserID(int)或用户名(字符串)登录。 我考虑这样做的方式是创建两个单独的方法,一个接受字符串,另一个接受 int。 但我无法让它工作,似乎可能有更好的解决方案。
public static string ForgotPassword ( string username )
{
using ( var conn = new SqlConnection( GetConnectionString() ) )
using ( var cmd = conn.CreateCommand() )
{
conn.Open();
cmd.CommandText =
@"SELECT
Password
FROM
Distributor
WHERE
Username = @username";
cmd.Parameters.AddWithValue( "@username", (string)username );
using ( var reader = cmd.ExecuteReader() )
{
if ( !reader.Read() )
{
// no results found
return null;
}
return reader.GetString( reader.GetOrdinal( "Password" ) );
}
}
}
public static string ForgotPassword ( int username )
{
using ( var conn = new SqlConnection( GetConnectionString() ) )
using ( var cmd = conn.CreateCommand() )
{
conn.Open();
cmd.CommandText =
@"SELECT
Password
FROM
Distributor
WHERE
DistributorID= @username";
cmd.Parameters.AddWithValue( "@username", (int)username );
using ( var reader = cmd.ExecuteReader() )
{
if ( !reader.Read() )
{
// no results found
return null;
}
return reader.GetString( reader.GetOrdinal( "Password" ) );
}
}
}
允许他们使用user_id或用户名登录的最佳方法是什么?
在您的第一种方法中,我会从该用户名中获取 userId,然后将其传递给第二种方法。
如果用户名与用户 ID 不匹配,则返回错误的方式与用户 ID 不存在时相同。
public static string ForgotPassword ( string username )
{
int userid = //Get userid from username
return ForgotPassword(userid);
}
public static string ForgotPassword ( int username )
{
using ( var conn = new SqlConnection( GetConnectionString() ) )
using ( var cmd = conn.CreateCommand() )
{
conn.Open();
cmd.CommandText =
@"SELECT
Password
FROM
Distributor
WHERE
DistributorID= @username";
cmd.Parameters.AddWithValue( "@username", (int)username );
using ( var reader = cmd.ExecuteReader() )
{
if ( !reader.Read() )
{
// no results found
return null;
}
return reader.GetString( reader.GetOrdinal( "Password" ) );
}
}
}