ASP. net - "НЕПРАВИЛЬНЫЙ СИНТАКСИС РЯДОМ" = "" - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь войти в систему, используя значения из двух разных таблиц, используя ASP. NET, но я получаю эту ошибку:

НЕПРАВИЛЬНЫЙ СИНТАКСИС NEAR "="

Код:

protected void Button1_Click1(object sender, EventArgs e)
{
        try
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand("Select Company_Master.Company_Code ='" + TextBox1.Text + "',Employee_Master.Emp_ID ='" + TextBox2.Text + "',Employee_Master.Emp_Pass ='" + Password1.Text + "' from Company_Master, Employee_Master where Company_Master.Company_Code = Employee_Master.Company_Code;");

            cmd.Connection = conn;
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();

            sda.Fill(dt);

            cmd.ExecuteNonQuery();                

            sda.Fill(ds, "Company_Master,Employee_Master");

            if (ds.Tables[0].Rows.Count > 0)
            {
                Label1.Text = "sign up done";
            }
            else
            {
                Label1.Text = "wrong login";
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
}

1 Ответ

2 голосов
/ 03 мая 2020

Кто-то сказал вам, что вы позволяете злоумышленникам проникнуть в ваш db и получить любую информацию или удалить все, что они хотят? Нет?

Я должен сказать Правин, вы всегда должны использовать параметризованные запросы или пытаться использовать Stored Procedures для чтения / записи / удаления чего-либо из вашей базы данных.

Более того, ваш запрос делает не имеет никакого смысла, поэтому я предполагаю, что вы хотите выбрать что-то, где company_code равно чему-то, а employee id равно чему-то и password равно чему-то.

Вот как это должно быть сделано с учетом SqlInjections.

protected void Button1_Click1(object sender, EventArgs e)
{
        var dt = new DataTable();
        try
        {
            using(SqlCommand cmd = new SqlCommand("Select * from Company_Master cm join Employee_Master em on cm.Company_Code = em.Company_Code where cm.Company_Code = @companyCode and em.Emp_ID = @employeeId and em.Emp_Pass = @password", conn))
            {

                cmd.Parameters.AddWithValue("@companyCode", TextBox1.Text);
                cmd.Parameters.AddWithValue("@employeeId", TextBox2.Text);
                cmd.Parameters.AddWithValue("@password", Password1.Text);

                conn.Open();

                var sdr = cmd.ExecuteReader();
                dt.Load(sdr);

                if (dt.Rows.Count > 0)
                {
                    Label1.Text = "sign up done";
                }
                else
                {
                    Label1.Text = "wrong login";
                }
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
}

Обратите внимание, я изменил ваш запрос для поддержки sql join и изменил запрос, чтобы он был параметризованным запросом в using блок. Кроме того, набор данных был изменен на DataTable, так как я заметил, что вы не получаете несколько таблиц и ссылаетесь на нулевой индекс набора данных Tables.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...