У меня есть столбец в базе данных, содержащий электронные письма. У меня есть метод, который принимает электронную почту в качестве параметра, и я хочу сравнить этот заданный параметр со всеми электронными письмами в базе данных, чтобы увидеть, выходит ли он. Обычно я бы сделал что-то подобное, учитывая, что электронные письма были в каком-то списке
internal bool EmailAlreadyExists(string email)
{
foreach(var currentEmail in someList)
{
if(currentEmail.Equals(email) { return false; }
}
return true;
}
Код, который у меня есть, выглядит так:
internal bool EmailAlreadyExists(string email)
{
_msqlCon.Open();
_query = "SELECT email FROM RegisteredUsers";
_command = new MySqlCommand(_query, _msqlCon);
foreach(var currentEmail in ???)
}
Как я могу поступить отсюда?
2 ответа
Вы можете использовать DataReader для чтения значений из базы данных.
var list = new List<string>();
MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataReader dataReader = cmd.ExecuteReader();
while (dataReader.Read())
{
list.Add(dataReader["email"].ToString());
}
dataReader.Close();
Вы можете проверить существование электронной почты непосредственно в базе данных
_query = "SELECT email FROM RegisteredUsers WHERE email = @Email";
_command.Parameters.Add("@Email", SqlDbType.String);
И список будет возвращать только записи, соответствующие электронной почте. Пусто, если совпадений нет.
Я думаю о меньшем количестве кода и меньшем количестве действий; этот код лучше:
query = "SELECT email, isnull(count(email), 0) as NUM FROM RegisteredUsers GROUP BY email";
DataTable dt = new DataTable();
SqlDataAdapter sql = new SqlDataAdapter(query, connection);
sql.Fill(dt);
if (Int32.Parse(dt.Rows[0][1].ToString()) > 0)
// your email is more than one or repeated
И dt[0][0]
возвращает email
.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.