我正在尝试用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
};