nar86 Ответов: 2

Как проверить значение текстового поля не существует в базе данных


protected void btnSearch_Click(object sender, EventArgs e)
        {
String ConnString = ConfigurationManager.ConnectionStrings["ConnectionStrings"].ConnectionString;
            SqlConnection con = new SqlConnection(ConnString);
           
            if (txtslipno.Text.Trim() != "")
            {
                SqlCommand cmd = new SqlCommand("select * from Sample where Slipno  = '" + textbox1.Text + "'", con);
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter();
                DataSet ds = new DataSet();
                da.SelectCommand = cmd;
                da.Fill(ds);
                grdRpt.DataSource = ds;
                grdRpt.DataBind();
                con.Close();
            }

            if (txtzone.Text.Trim() != "")
            {
                SqlCommand cmd = new SqlCommand("select * from Sample where Zone  = '" + textbox2.Text + "'", con1);
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter();
                DataSet ds = new DataSet();
                da.SelectCommand = cmd;
                da.Fill(ds);
                grdRpt.DataSource = ds;
                grdRpt.DataBind();
                con.Close();


            }
            if (txtsetion.Text.Trim() != "")
            {
                SqlCommand cmd = new SqlCommand("select * from Sample where Section  = '" + textbox3.Text + "'", con2);
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter();
                DataSet ds = new DataSet();
                da.SelectCommand = cmd;
                da.Fill(ds);
                grdRpt.DataSource = ds;
                grdRpt.DataBind();
                con.Close();
            }
        }


из приведенных выше трех текстовых полей есть.

Скольжения нет раздела текстовое поле textbox1 поле textbox2 textbox3 и зоны


я хочу проверить из вышесказанного, если textbox1 slip no entered value is not in database показывает сообщение для использования записей не найдено


аналогично если введенное значение зоны textbox2 отсутствует в базе данных отображается сообщение пользователю записи не найдены

аналогично если введенное значение раздела textbox3 отсутствует в базе данных отображается сообщение пользователю записи не найдены


для этого как сделать в моем вышеприведенном коде.

Что я уже пробовал:

См. раздел описание.

Bryian Tan

это приложение для Windows? и разрешено ли пользователю вводить значение в три текстовых поля, а затем отправлять или одно текстовое поле, а затем отправлять?

David Crow

Разве это не должно быть так:

if (txtslipno.Text.Trim() != "")
{
    SqlCommand cmd = new SqlCommand("select * from Sample where Slipno  = '" + textbox1.Text + "'", con);


быть вместо этого:

if (txtslipno.Text.Trim() != "")
{
    SqlCommand cmd = new SqlCommand("select * from Sample where Slipno  = '" + txtslipno.Text + "'", con);

2 Ответов

Рейтинг:
2

Patrice T

SqlCommand cmd = new SqlCommand("select * from Sample where Slipno = '" + textbox1.Text + "'", con);

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? - Обмен Стеками Информационной Безопасности[^]


Рейтинг:
1

Vinod Jangle

Как уже упоминалось ppolymorphe, ваш код имеет проблему с SQL-инъекцией, и вам нужно обновить код для этого.

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


if (txtslipno.Text.Trim() != "")
{
    SqlCommand cmd = new SqlCommand("select * from Sample where Slipno  = '" + textbox1.Text + "'", con);
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter();
    DataSet ds = new DataSet();
    da.SelectCommand = cmd;
    da.Fill(ds);

    if(ds.Tables != null && ds.Tables[0].Rows.Count > 0)
    {
       //you got DS populated with your slip number  
        grdRpt.DataSource = ds;
        grdRpt.DataBind();
    }
    else
    { 
        //no record found for your slip number 
    }
    con.Close();
}