Я передаю параметры в sql-запросе с помощью драйвера npgsql:
SqlCommand = new NpgsqlCommand();
....
SqlCommand.CommandText = "SELECT id,name FROM table1 WHERE field1=:param2 ORDER BY name;";
SqlCommand.Parameters.AddWithValue("param2", 1);
Этот запрос выполнен правильно и выдает необходимые данные, но как только я добавлю параметр в sql в разделе "select",
SqlCommand.CommandText = "SELECT id,name :param1 FROM table1 WHERE field1=:param2 ORDER BY name;";
SqlCommand.Parameters.AddWithValue("param1", ",field1");
SqlCommand.Parameters.AddWithValue("param2", 1);
это дает мне какую-то глупость. Теоретически этот запрос на сервер должен рассматриваться как
SELECT id,name,field1 FROM table1 WHERE field1=1 ORDER BY name;
но этого не произошло. Возникает вопрос: существует ли способ динамически вставлять список полей, используя такие параметры?
К сожалению, Npgsql не поддерживает то, что вы пытаетесь сделать. Значения NpgsqlParameter должны использоваться только как значения параметров в предложении where. Чтобы добавить имена полей динамически, как вы планируете, вам нужно будет создать запрос вручную, используя конкатенацию строк.
Я надеюсь, что это помогает.
SELECT
после проверки того, что предоставленные значения на самом деле являются полями таблицы.
Перепишите команду CommandText и добавьте следующее:
foreach (NpgsqlParameter item in _Command.Parameters)
{
comm.Parameters.AddWithValue(item.ParameterName, item.Value);
}
И решить вашу проблему..
SELECT
вы должны вернуть значение параметра