ОК, насколько я понимаю, вы хотите, чтобы ВСТАВКА происходила только в том случае, если адрес электронной почты уникален в поле [reg].[email]
. Это произойдет, если b == true
. Логика, которую вы используете для этого, в основном верна, но вы не получаете результаты базы данных правильно. Попробуйте что-то вроде:
con.Open();
System.Data.SqlClient.SqlDataReader objReader = comsel.ExecuteReader();
while (objReader.Read())
{
if ((String)objReader("email") == str)
{
Label9.Text = "this email already exist choose another one";
Label9.Visible = true;
b = false;
break;
}
else
{
b = true;
}
}
con.Close();
Надеюсь, это будет работать как задумано.
С другой стороны, я бы не стал упоминать, что этот подход довольно неэффективен. Лучше было бы использовать такой запрос:
SELECT [email] FROM [reg] WHERE [email] = @email;
В которой вы указываете свою переменную "str" в качестве параметра аналогично операции INSERT ниже. Затем вместо того, чтобы перебирать результаты, просто проверьте, есть ли в SqlDataReader строки:
SqlConnection con = new SqlConnection(@"Data Source=SAMA-PC\SQLEXPRESS;Initial Catalog=meral10;Integrated Security=True");
SqlCommand comsel = new SqlCommand("SELECT [email] FROM [reg] WHERE [email] = @email;",con);
comsel.Parameters.AddWithValue("@email", str);
System.Data.SqlClient.SqlDataReader objReader = comsel.ExecuteReader();
if (objReader.HasRows())
{
b = false;
}
else
{
b = true;
}
con.Close();