SQL для C # Войти запрос - PullRequest
       24

SQL для C # Войти запрос

0 голосов
/ 14 февраля 2012

Привет, я много искал по этой теме, и я не могу понять большую часть кодирования, сделанного пользователями, я хорошо разбираюсь в 'Boarland C ++ builder' и имею хороший опыт работы с ним, но я не могу показаться Чтобы докопаться до сути MSVS C # 2008, в любом случае, моя проблема заключается в запросе SQL для входа в систему. Если это правильное имя, кажется, что ни одно из найденных и найденных решений не работает вообще, вот часть моего кода «

using System.Data.Sql;

using System.Data.SqlClient;

namespace DMSTestLoginForm

{

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        string connection = @"Data Source=.\SQLExpress;AttachDbFilename=|Data Directory is all set and ready to go|.mdf;Integrated Security=True;User Instance=True";
        SqlConnection con = new SqlConnection(connection);

        try
        {
            con.Open();
            //MessageBox.Show("Connection Successful");
        }
        catch (Exception)
        {
            //MessageBox.Show("Did not connect"); // connection is successful the issue is down bellow.
        }
    }

    private void lgnbtn_Click(object sender, EventArgs e)
    {
        string dummyun = uninput.Text;
        string dummypw = pwinput.Text;
        SqlCommand dummy1 = new SqlCommand("SELECT * FROM nurse WHERE n_id ='"+uninput.Text+"'");
        SqlCommand dummy2 = new SqlCommand("SELECT * FROM nurse WHERE n_pw = '"+pwinput.Text+"'");
        string dum = Convert.ToString(dummy1);
        string dum2 = Convert.ToString(dummy2);
        if((dum==dummyun)&&(dum2==dummypw))
            MessageBox.Show("Welcome in");        //this message is to test if i logged in or not.
            //Form2 Loggedin = new Form2;
            //Loggedin.Show();
       else
            MessageBox.Show("Login failed"); 

    }

проблема не в моей строке подключения, а в том, как я упоминал выше, в запросе SQL, чтобы проверить, содержатся ли имя пользователя / пароль в моем DB.table; «медсестра», или нет, я знаю, что создал много «строковых» экземпляров, но я попал в отчаянную ситуацию и буду очень благодарен поставщикам решений, заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 14 февраля 2012

вам нужно выполнить ваш объект SqlCommand с помощью Datareader.и попробуйте использовать параметризованные запросы. SqlDatareader

private void lgnbtn_Click(object sender, EventArgs e)
    {
        string dummyun = uninput.Text;
        string dummypw = pwinput.Text;
        con.Open();

        using(SqlCommand StrQuer = new SqlCommand("SELECT * FROM nurse WHERE n_id=@userid AND n_pw=@password", con))
        {
           StrQuer.Parameters.AddWithValue("@userid",dummyun);
           StrQuer.Parameters.AddWithValue("@password",dummypw);
         SqlDataReader dr = StrQuer.ExecuteReader(); 
         If(dr.HasRows)
         {
           MessageBox.Show("loginSuccess");    
         }
        else
        {
          //invalid login
        } 
     }   
    }
1 голос
/ 14 февраля 2012

A SqlCommand - это не то, что вы просто называете Convert.ToString.У него есть методы, которые вам нужно вызвать , чтобы получить ожидаемые результаты.

Вам нужно вызвать метод, подобный ExecuteReader, и прочитать результаты обратно.И вам, вероятно, следует изменить свой запрос на один запрос вместо двух отдельных запросов.Наконец, как указал @SLaks, вы не хотите делать себя уязвимым для sql-инъекций, поэтому попробуйте написать свой запрос как параметризованный запрос и добавить свои параметры через SqlCommand s Parameters собственность.

0 голосов
/ 25 февраля 2019

Это волшебный код для кнопки входа.Это также сделает видимыми метки с сообщением об ошибке.

private void btnlogin_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(@"PASTE_YoURCONNECTION_STRING_HERE"); 
            SqlDataAdapter usr = new SqlDataAdapter("SELECT COUNT(*) FROM login WHERE username='" + textBox1.Text + "'", con);
            SqlDataAdapter pswd = new SqlDataAdapter("SELECT COUNT(*) FROM login WHERE password='" + textBox2.Text + "'", con);
            DataTable dt1 = new DataTable(); //this is creating a virtual table  
            DataTable dt2 = new DataTable();
            usr.Fill(dt1);
            pswd.Fill(dt2);
            if (dt1.Rows[0][0].ToString() == "1" && dt2.Rows[0][0].ToString() == "1")
            {
                this.Hide();
                new mainform().Show();
            }
            else if (dt1.Rows[0][0].ToString() != "1" && dt2.Rows[0][0].ToString() != "1")
            {
                usrerror.Visible = true;
                pswrderror.Visible = true;
            }
            else if (dt1.Rows[0][0].ToString() == "1" && dt2.Rows[0][0].ToString() != "1")
            {
                usrerror.Visible = false;
                pswrderror.Visible = true;
            }
            else if (dt1.Rows[0][0].ToString() != "1" && dt2.Rows[0][0].ToString() == "1")
            {
                usrerror.Visible = true;
                pswrderror.Visible = false;
            }               
        } 

Смотрите скриншот

...