Параметризированный запрос SQL-Server

308
06 февраля 2020, 21:20

Не работает параметризированный запрос к БД SQL-Server. Для текущего узла TreeView я вывожу данные из связанной таблицы

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
        string cur = treeView1.SelectedNode.Text;
        string connectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\TestBase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
        string commandText = "SELECT Employees.Name, Employees.Experience FROM Departments INNER JOIN Employees ON Departments.id=Employees.Department WHERE Departments.Name=" + cur + ";";
        SqlConnection conn = new SqlConnection();
        conn.ConnectionString = connectionString;
        conn.Open();
        SqlDataAdapter dataAdapter = new SqlDataAdapter(commandText, conn);
        DataSet ds = new DataSet();
        dataAdapter.Fill(ds);
        dataGridView1.DataSource = ds.Tables[0].DefaultView;
    }

Если в запросе убираю WHERE, то все работает, но выводятся все записи, а мне надо лишь определенные. На строке dataAdapter.Fill(ds) вылетает исключение SQLException: Invalid column name 'Бухгалтерия'.

Answer 1

Правильно делать через параметры и через SqlCommand:

string commandText = "SELECT Employees.Name, Employees.Experience FROM Departments INNER JOIN Employees ON Departments.id=Employees.Department WHERE Departments.Name=@Name;";
SqlCommand cmd = new SqlCommand(commandText, conn); 
SqlParameter Param1 = new SqlParameter("@Name", SqlDbType.VarChar);
Param1.Value = cur;
cmd.Parameters.Add(Param1);
SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd);
Answer 2

Если Departments.Name - строковый, то надо поставить "'". Т.е. ...Departments.Name='" + cur + "';". Но все-же лучше, как советовал Yura Ivanov. К примеру, дату проще задавать через параметры.

READ ALSO
Кодировка польских литер

Кодировка польских литер

Есть проблема - магазин Prestashop 17

325
Помогите понять. SQL JOIN. Отсутствует уникальный столбец\ Данное выделение не содержит уникального столбца

Помогите понять. SQL JOIN. Отсутствует уникальный столбец\ Данное выделение не содержит уникального столбца

Есть вот такой кусок БД классного журнала и требуется получить оценки студентов по ID явкиСоставил вот такой запрос однако в нём нет уникального...

321
Как в phpstorm отключить службу ONLY_FULL_GROUP_BY?

Как в phpstorm отключить службу ONLY_FULL_GROUP_BY?

Есть sql-запрос который в phpMyAdmin и консоли phpStorm работает правильно, но когда тот же самый запрос пытаюсь использовать в коде, ругается на то, что...

364
Структура классов Exception

Структура классов Exception

Реализую интеграцию с 1СФайловая структура такая:

291