Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Помогите написать цикл


Автор: Mouse27 13.3.2008, 23:27
Помогите написать цикл. Что бы Текст из ТекстБокса1 сравнивало со всеми логинами в базе. А то у меня сравнивает только с первой записью.


Код

protected void Button2_Click(object sender, EventArgs e)
    {
        string connStr = "Data Source=MOUSE;Initial Catalog=STUDENTS;Integrated Security=True";

        SqlConnection conn = new SqlConnection(connStr);

        string SQL = "select Logins from dbo.Table_Mouse where (Logins like '"+TextBox1.Text+"')";

        SqlCommand comm = new SqlCommand(SQL, conn);

        conn.Open();

        SqlDataReader reader = comm.ExecuteReader();

        while (reader.Read())
        {
            if (TextBox1.Text == reader[0].ToString())
            {
                Label1.Text = "Логин занят";
            }

            else
            {
                Label1.Text = "Логин свободен";
            }
        }

        conn.Close();


    }

Автор: kizune 14.3.2008, 10:01
Код

try
{
conn.Open();
        SqlDataReader reader = comm.ExecuteReader();
        while (reader.Read())
        {
            if (TextBox1.Text == reader.GetValue(0).ToString())
            {
                Label1.Text = "Логин занят";
            }
            else
            {
                Label1.Text = "Логин свободен";
            }
        }
}
finally
{
        conn.Close();
}

Автор: Mymik 14.3.2008, 12:52
Цитата(Mouse27 @  13.3.2008,  23:27 Найти цитируемый пост)
Помогите написать цикл. Что бы Текст из ТекстБокса1 сравнивало со всеми логинами в базе. А то у меня сравнивает только с первой записью.

а зачем тебе цикл  smile ведь твой sql запрос возвращает записи у которых Logins = TextBox1.Text. Если тебе возвращается хотя бы одна запись, то ты уже можешь смело писать, что login занят. А лучше возвращай count(Logins) так быстрее и делаешь потом comm.ExecuteScalar() преобразуешь в int и сравниваешь... вот и все.

Ну а если тебе цикл нужен, то тебе необходимо возвращать все записи, а не те которые удовлетворяют условию, что конкретно для данной задачи ужасно нецелесообразно.

Кстати, kizune, ты написала совершенно идентичный код ТС... что ты хотела им сказать?

Автор: kizune 14.3.2008, 13:02
ошиблась с недосыпа )

Автор: Mouse27 14.3.2008, 21:09
Всё. А сам разрешил проблему. Вот как получилось!

Код

        string connStr = "Data Source=MOUSE;Initial Catalog=STUDENTS;Integrated Security=True";

        SqlConnection conn = new SqlConnection(connStr);

        string SQL = "select Logins from dbo.Table_Mouse where (Logins like '" + TextBox1.Text + "')";

        SqlCommand comm = new SqlCommand(SQL, conn);

        conn.Open();

        SqlDataReader reader = comm.ExecuteReader();

        if (reader.Read())
        {
            Label1.Text = "Логин занят";
        }
        else
        {
           Label1.Text = "Логин свободен";
        }

        conn.Close();


Что скажите?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)