Проверка текстового поля приложения C # Windows Forms в отношении базы данных SQL - PullRequest
0 голосов
/ 06 декабря 2011

Я новичок в C # и имею опыт работы с SQL, поэтому извиняюсь, если это очень глупый запрос, но я трачу Google уже около 2 часов и не могу найти то, что мне нужно. Если кто-то знает статью, на которую они могут указать мне, это было бы здорово.

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

У меня есть БД SQL Server (SQL 2005) со следующей таблицей:

Пользователи UserID (int); userName nvarchar (50)

Я использую Visual Studio 2010

Что меня сбило с толку, так это как проверить, существует ли их userID в моей таблице SQL (называемые пользователями ...). Я не собираюсь помещать здесь какой-либо код, потому что он столько раз переписывался с нуля, что чистый шифер, наверное, лучший!

В идеале я хочу, чтобы пользователь ввел свой идентификатор пользователя и нажал «Войти». Когда они делают это, если их userID недействителен в таблице DB, тогда мне нужно, чтобы он выдал ошибку msgBox; если он действителен, он должен войти в систему, передавая их userID и userName (хранящиеся в таблице БД) в переменную, которую я могу использовать в другом месте приложения для заполнения полей.

Надеюсь, это имеет смысл, и я уверен, что пропустил идеальную статью, которая все это объяснит - надеюсь, один из вас, добрые люди, может указать мне правильное направление!

Спасибо

Ответы [ 3 ]

1 голос
/ 03 апреля 2014
    /*table code
     * create table login
           (
                id varchar(25),
                    pass varchar(25)
            )   
     * 
     * 
     * 
     * 
     */

    string Connectstring = @"Data Source=DELL-PC;Initial Catalog=stud;Integrated Security=True";
    public Form1()
    {
        InitializeComponent();
    }



    private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection cn = new SqlConnection(Connectstring);
        cn.Open();


        SqlCommand cmd = new SqlCommand("select * from log where id=@a and pass=@b", cn);
        cmd.Parameters.AddWithValue("@a", textBox1.Text.ToString().ToUpper());
        cmd.Parameters.AddWithValue("@b", textBox2.Text);

        SqlDataReader dr = cmd.ExecuteReader();


        if ((dr.Read() == true))
        {
            MessageBox.Show("The user is valid!");
            Form2 mainForm = new Form2();
            mainForm.Show();
            this.Hide();
        }
        else
        {
            MessageBox.Show("Invalid username or password!");
        }


    }
1 голос
/ 06 декабря 2011

Вы должны сделать простой запрос SQL с идентификатором пользователя, введенным пользователем, например
ВЫБЕРИТЕ UserID от Users, где userID = значение. ExecuteNonQuery () вернет количество совпадений. Если возвращаемое значение == 1, означает, что идентификатор пользователя существует в базе данных. Если возвращаемое значение отличается от 1, это означает, что идентификатор пользователя не существует или он был зарегистрирован несколько раз. Итак, если 1, то вы можете вызывать другую форму для создания разных вещей, иначе вы вызываете другую форму или выводите окно сообщения с сообщением об ошибке

0 голосов
/ 06 декабря 2011

Объявление строки подключения к вашей базе данных

string connString = @"Data Source=.\SQLEXPRESS;Initial Catalog=YourDatabase;Integrated Security=True";

После этого Вы можете использовать метод проверки ниже

private bool ValidateUserById(string connString, int id)
{
    using (var conn = new SqlConnection(connString))
    {
        conn.Open();

        var sqlString = string.Format("Select * From Users where Id = {0}", id);
        using (var cmd = new SqlCommand(sqlString, conn))
        {
                return cmd.ExecuteScalar() != null;
        }
    }
}

Затем при нажатии кнопки Вы можете проверить пользователя

if (ValidateUserById(connString, Convert.ToInt32(textBox1.Text)))
{
    //..
}
else
{
    //..
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...