我已经搜索过,但无法找到这个问题的答案:
我知道c#中有多行字符串。但是如何创建像这样的字符串:
string temp = @"DECLARE @rolename varchar(max)
SET @rolename ='***'
EXEC sp_addrolemember N'db_execute',@rolename"
*代表我需要声明一个具有某些值的变量,例如(object.variable)。
这个可能吗?
我已经搜索过,但无法找到这个问题的答案:
我知道c#中有多行字符串。但是如何创建像这样的字符串:
string temp = @"DECLARE @rolename varchar(max)
SET @rolename ='***'
EXEC sp_addrolemember N'db_execute',@rolename"
*代表我需要声明一个具有某些值的变量,例如(object.variable)。
这个可能吗?
.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.Format 方法:
string temp = string.Format(@"DECLARE @rolename varchar(max)
SET @rolename ='{0}'
EXEC sp_addrolemember N'db_execute',@rolename", variable);
Yes its possible:
string temp = string.Format(@"DECLARE @rolename varchar(max)
SET @rolename ='{0}'
EXEC sp_addrolemember N'db_execute',@rolename", variable);