4

我用谷歌搜索但找不到这个问题的答案:

我知道 C# 中的多行字符串。但是我怎样才能创建一个像这样的字符串:

string temp = @"DECLARE @rolename varchar(max)
SET @rolename ='***' 
EXEC sp_addrolemember N'db_execute',@rolename"

*表示我必须删除具有某些值的变量,例如(object.variable)。

这可能吗??

4

4 回答 4

10

.NET 支持多行字符串,当然。@"..."语法只是简化语言的捷径。但是,在您的特定示例中,您不应尝试将值连接在:整个示例应通过参数完成:

cmd.CommandText = "EXEC sp_addrolemember N'db_execute',@rolename";
cmd.Parameters.AddWithValue("rolename", yourRoleName);

更新:检查msdn,第二个参数实际上是成员名称,但您也可以使用:

cmd.CommandText = "sp_addrolemember";
cmd.CommantType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("rolename", "db_execute");
cmd.Parameters.AddWithValue("membername", yourMemberName);
于 2013-08-21T11:01:22.807 回答
5

你可以使用string.Format

string temp = @"DECLARE @rolename varchar(max)
SET @rolename ='{0}' 
EXEC sp_addrolemember N'db_execute',@rolename";

string result = string.Format(temp, object.variable);

请注意,如果object.variable是(或将来可能是)用户定义的变量,则您对 sql-injection 攻击持开放态度。

于 2013-08-21T11:00:31.647 回答
3

使用string.Format方法:

string temp = string.Format(@"DECLARE @rolename varchar(max)
SET @rolename ='{0}' 
EXEC sp_addrolemember N'db_execute',@rolename", variable);
于 2013-08-21T11:00:24.837 回答
1

是的,有可能:

string temp = string.Format(@"DECLARE @rolename varchar(max)
SET @rolename ='{0}' 
EXEC sp_addrolemember N'db_execute',@rolename", variable);
于 2013-08-21T11:01:27.370 回答