. NET Core 3.1 - SQL Сервер - создание нового логина и пользователя - проблема с параметрами - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь создать новый логин и пользователя с классом SqlCommand. Но я не могу использовать параметры:

await using SqlConnection connection = new SqlConnection(connectionString);
await connection.OpenAsync();

SqlCommand command = new SqlCommand("create login @login with password = '@pwd';", connection);

command.Parameters.Add(createParam("@login", "some_login"));
command.Parameters.Add(createParam("@pwd", "rsmZYdX187_V_xu1!@99"));

int results = await command.ExecuteNonQueryAsync();


private SqlParameter createParam(string name, string value)
{
    var parameter = new SqlParameter
    {
        DbType = DbType.String, 
        SqlValue = value,
        ParameterName = name
    };

    return parameter;
}

, но я все еще получаю сообщение об ошибке Неверный синтаксис рядом с'@login'. Я также пытался удалить @ из имя. Без использования параметров и помещения значений в запрос он работает нормально, но сейчас я этого хочу (и также это подтверждает синтаксис в порядке). Итак, что здесь не так?

1 Ответ

0 голосов
/ 06 апреля 2020

Мне кажется, проблема в том, что вы устанавливаете свойство SqlValue , а не свойство Value . Я никогда раньше не замечал свойство SqlValue, но обнаружил, что сообщение об ошибке, которое вы опубликовали, несколько подозрительно, поскольку параметр @login, похоже, не заменяется.

Попробуйте вместо этого:

var parameter = new SqlParameter
{
    DbType = DbType.String, 
    Value = value,
    ParameterName = name
};
...