C# SqlDataReader, прочитать кратную строку в классе - PullRequest
0 голосов
/ 20 июня 2020

Как я могу разрешить моему методу считывать кратную строку, чтобы он мог читать идентификатор пользователя или адрес электронной почты и предотвращать дублирование данных.

       public bool usersduplicate(string username)
    {
        bool duplicate = false;
        string selectSQL = "SELECT username FROM Users";
        Connect();
        SqlCommand cmd = new SqlCommand(selectSQL, conn);
        SqlDataReader dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            if (dr["username"].ToString().ToUpper() == username.ToUpper())
            {
                duplicate = true; 
            }
            
        }

вот как я проверяю наличие данных.

if (ctrls.checkclubexist(txtNameClubReg.Text) == true || txtNameClubReg.Text == "")
        {
        }

Ответы [ 2 ]

0 голосов
/ 22 июня 2020

Вы бы использовали несколько значений так же, как метод в настоящее время использует одно значение. По сути, в любую строку кода, где вы в настоящее время используете «имя пользователя», вы должны добавить «электронная почта». Например ...

Где ваш метод в настоящее время принимает один параметр:

public bool usersduplicate(string username)

принимает два:

public bool usersduplicate(string username, string email)

Где вы сейчас выбираете username из данных :

string selectSQL = "SELECT username FROM Users";

выберите оба значения (предполагая здесь имя столбца):

string selectSQL = "SELECT username, email FROM Users";

Где вы сейчас сравниваете одно значение:

if (dr["username"].ToString().ToUpper() == username.ToUpper())

сравните оба:

if (dr["username"].ToString().ToUpper() == username.ToUpper() || dr["email"].ToString().ToUpper() == email.ToUpper())

В этом нет ничего особенного. По сути, когда вы можете что-то сделать (в этом случае сравнить входное значение со значением данных) и хотите сделать это снова, вы, как правило, просто повторите то, что вы уже делаете.

0 голосов
/ 20 июня 2020

Я бы посоветовал вам написать запрос в хранимой процедуре и передать имя пользователя в качестве параметра в SP, а затем запустить ExecuteScalar, чтобы получить значение. нет необходимости выбирать всех пользователей.

SELECT username FROM Users where username = @userName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...