Я пытаюсь заменить параметры в строке для выполнения в запросе Npgsql.Параметры, которые не заменяются должным образом в NpgsqlCommand
Проблема заключается в том, что при замене параметра по его значению в строке он добавляет лишние круглые скобки, и поэтому запрос возвращает ошибку.
NAME_SCHEMA_DB
и NAME_ADMIN_DB
строковые константы и ExecuteCommand
просто принимает NpgsqlCommand
и выполняет его.
Это мой код:
String qdropSchema = @"DROP SCHEMA IF EXISTS @name_schem CASCADE";
String qCreateSchema = @"CREATE SCHEMA @name_schem AUTHORIZATION @name_admin";
DbCommand commandeDrop = new NpgsqlCommand(qdropSchema);
commandDrop.Parameters.Add(new NpgsqlParameter("@name_schem", NAME_SCHEMA_DB));
DbCommand commandCreate = new NpgsqlCommand(qCreateSchema);
commandCreate.Parameters.Add(new NpgsqlParameter("@name_schem", NAME_SCHEMA_DB));
commandCreate.Parameters.Add(new NpgsqlParameter("@name_admin", NAME_ADMIN_DB));
ExecuteCommand(commandDrop);
ExecuteCommand(commandCreate);
Это то, что SQL-запрос он пытается выполнить, когда он достигает ExecuteCommand(commandDrop)
DROP SCHEMA IF EXISTS (() 'test_schemaName') CASCADE;
Я не уверен, почему он добавляет дополнительные круглые скобки и одинарные кавычки. Обычно я хочу, чтобы запрос, который он запускал, был
DROP SCHEMA IF EXISTS test_schemaName CASCADE;
Поскольку его строка, система параметров окружает ее в кавычках. Параметры не предназначены для указания таблиц или схем. Является ли имя схемы введенным пользователем? –