c#允许变量调用的多行字符串

本文关键字:调用 字符串 变量 许变量 | 更新日期: 2023-09-27 18:28:38

我在谷歌上搜索过,但找不到这个问题的答案:

我知道c#中的多行字符串。但是我如何创建一个字符串,如:

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

*表示在那里我必须delcare一个有一些值的变量,比如(object.variable).

这可能吗??

c#允许变量调用的多行字符串

.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);

您可以使用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注入攻击。

使用字符串。格式方法:

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

有可能:

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