C# 将字符串与表中的列值进行比较
我在数据库中有一列包含电子邮件。我有一个方法,将电子邮件作为参数,我想将这个参数与数据库中的所有电子邮件进行比较,看看它是否存在。 通常我会这样做,因为邮件在一些列表中C# 将字符串与表中的列值进行比较,c#,mysql,C#,Mysql,我在数据库中有一列包含电子邮件。我有一个方法,将电子邮件作为参数,我想将这个参数与数据库中的所有电子邮件进行比较,看看它是否存在。 通常我会这样做,因为邮件在一些列表中 internal bool EmailAlreadyExists(string email) { foreach(var currentEmail in someList) { if(currentEmail.Equals(email) { return false;
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 ???)
}
如何从这里开始?您可以使用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, 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]
返回电子邮件
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