Как создать роли для postgresql в C#?
Привет,
Я пытаюсь создать форму Win на C#, которая будет использоваться для добавления пользователей (роли входа в систему) на мой сервер PostgreSQL.
SQL-запрос для Postgres-это:
"CREATE USER john LOGIN PASSWORD 'abc';"
Расширенный запрос будет:
"CREATE USER john LOGIN PASSWORD 'abc' IN ROLE "members" CREATEROLE;"
Вот код C#, который я использую:
public static void CreateUser(NpgsqlConnection pgConnection, TextBox[] txtCredentials) { try { if (pgConnection.State != ConnectionState.Open) pgConnection.Open(); using (var pgCommand = new NpgsqlCommand()) { pgCommand.Parameters.Clear(); pgCommand.Parameters.AddWithValue("@user", txtCredentials[0].Text); pgCommand.Parameters.AddWithValue("@pw", txtCredentials[1].Text); pgCommand.CommandText = "CREATE USER @user LOGIN PASSWORD @pw;"; pgCommand.Connection = pgConnection; pgCommand.ExecuteNonQuery(); } } catch (NpgsqlException pgMsg) { MessageBox.Show(pgMsg.Message); } }
Когда он достигает ". ExecuteNonQuery ()", он выдает ошибку со следующим сообщением: 42601: ошибка синтаксиса в или рядом "$1"
Я понятия не имею, в чем может быть проблема, потому что запрос с параметрами в C# выглядит так же, как и в SQL.
Можете ли вы пожалуйста, поделитесь советом?
Спасибо
Что я уже пробовал:
Я попытался использовать "создать роль "вместо" создать пользователя", но все равно тот же результат.
camaron182
можете ли вы включить команду SQL при предоставлении значений для txtCredentials? это может быть синтаксис PostgreSQL
Stelig
Я использую TextBox[] txtCredentials = {txtUser, txtPw};
а затем вызовите метод.