.NET Core 3.1-SQL Server-创建一个新的登录名并使用参数发出用户问题



我正在尝试用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"附近的语法不正确我还试图从名称中删除@。在不使用参数和将值放入查询中的情况下,它可以很好地工作,但这正是我现在想要的(而且它还证明了语法很好(。那么,这里出了什么问题?

我认为问题在于您设置的是SqlValue属性,而不是Value属性。我以前从未注意到SqlValue属性,但我发现您发布的错误消息有些可疑,因为@login参数似乎没有被替换。

试试这个:

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

最新更新