C# SQL поиск по таблице

119
26 декабря 2020, 02:00

Не могу понять, в чем проблема, где-то накосячила с запросом, но не могу понять, где...

  public void Search()
    {
            Boolean z = false;
        try
        {
            string sql = "SELECT * FROM goods WHERE ";
            if (tb_Name.Text != "")
            {
                sql = sql + "name =" + tb_Name.Text;
                z = true;
            }
            if (tb_Count.Text != "")
            {
                if (z)
                {
                    sql = sql + " and  ";
                }
                sql = sql + "count =" + "'" + tb_Count.Text + "'";
                z = true;
            }
            if (tb_Cost.Text != "")
            {
                if (z)
                {
                    sql = sql + " and  ";
                }
                sql = sql + "cost =" + "'" + tb_Cost.Text + "'";
                z = true;
            }
            if (z) { } else { sql = "Select * from goods"; }

            connect.Open();
            SqlDataAdapter sda = new SqlDataAdapter(sql, connect);
            SqlCommandBuilder scb = new SqlCommandBuilder(sda);
            DataTable DATA = new DataTable();
            sda.Fill(DATA);
            dataGridView1.DataSource = DATA;
        }
        catch (SqlException a)
        {
            Console.WriteLine(a);
        }
        finally
        {
            connect.Close();
        }
        View();                           
    }

Думаю косяк где-то тут:

string sql = "SELECT * FROM goods WHERE ";
            if (tb_Name.Text != "")
            {
                sql = sql + "name =" + tb_Name.Text;
                z = true;
            }
            if (tb_Count.Text != "")
            {
                if (z)
                {
                    sql = sql + " and  ";
                }
                sql = sql + "count =" + "'" + tb_Count.Text + "'";
                z = true;
            }
            if (tb_Cost.Text != "")
            {
                if (z)
                {
                    sql = sql + " and  ";
                }
                sql = sql + "cost =" + "'" + tb_Cost.Text + "'";
                z = true;
            }
            if (z) { } else { sql = "Select * from goods"; }

Явных ошибок не выдаёт, ничего просто не происходит. В этом фрагменте кода я уверена, работает в другом методе:

        connect.Open();
        SqlDataAdapter sda = new SqlDataAdapter(sql, connect);
        SqlCommandBuilder scb = new SqlCommandBuilder(sda);
        DataTable DATA = new DataTable();
        sda.Fill(DATA);
        dataGridView1.DataSource = DATA;
Answer 1

Воспроизведите ситуацию, когда у вас ничего не происходит, но изначально точку остановы поставьте перед окончанием метода и посмотрите какой запрос лежит в вашей переменной sql. Далее проверьте запрос через sqlmanager ведя запрос из вашей переменной. После запроса, сразу увидите в какую сторону копать. Если sql, смотрите синтаксис, а если проблема в коде, то проверяйте подключение.

READ ALSO
Как преобразовать форматированные даты в цифры (3.12M)

Как преобразовать форматированные даты в цифры (3.12M)

Допустим строка 3,12КЯ хочу преобразовать его в норм число

132
Запрет на ввод своего значения в Combobox

Запрет на ввод своего значения в Combobox

Когда пользователь выбирает элемент из списка в Combobox, он может ввести и свое значение, выглядит это так:

112
Интеграция ресурсов в приложение

Интеграция ресурсов в приложение

У меня есть приложение с разными темами и мне нужно как-то получать к ним доступСамым подходящим для меня является файл ресурсов

94
Вывод информации из Word

Вывод информации из Word

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

129