C# “如何替换”;[十] ";在一个字符串中,每个X有一个特定的值?

C# “如何替换”;[十] ";在一个字符串中,每个X有一个特定的值?,c#,string,C#,String,这是SqlCommand CommandText,我将替换所有以[和]开头的字符串 使用前命令 如何找到参数名[and]? 我必须使用string.IndexOf(Sample,“[”)ets吗?或者是否还有另一个空白可以简化?不要这样做-而是使用它来参数化查询,这是内置的,即: string Sample=@" Select * from Table1 where Id =[MY Id] and Column2=[MY Column2 Value] "; 否-您应该String.Forma

这是SqlCommand CommandText,我将替换所有以[和]开头的字符串 使用前命令 如何找到参数名[and]?
我必须使用string.IndexOf(Sample,“[”)ets吗?或者是否还有另一个空白可以简化?

不要这样做-而是使用它来参数化查询,这是内置的,即:

string Sample=@"
Select * from Table1 where Id =[MY Id]
and Column2=[MY Column2 Value]
 ";

否-您应该
String.Format
方法-请参见此处:

除了可以使用
SqlParameter
之外,您还可以定义

using(SqlCommand cmd  = new SqlCommand("Select * from Table1 where Id = @id and Column2=@columnTwo", myConnection))
{
   cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.BigInt)).Value = someId;
   cmd.Parameters.Add(new SqlParameter("@columnTwo", SqlDbType.NVarChar)).Value = "You name it";
   //..
}
然后按如下方式获取命令:

string Sample=@"
Select * from Table1 where Id =[{0}]
and Column2=[{1}]
 ";

其中,
id1
id2
是您的参数。

知道值后为什么不创建sql?为什么不能使用标准sql参数方法执行此任务?+1-完全同意。您不想受到sql注入攻击,也不必担心包含“字符”的字符串。不要重新注入即使使用参数化查询,您也应该验证输入数据。但我正在尝试创建报表。因此,我必须在查询中找到参数,以便用户插入值。@YardimaIhtiyaciOlan:这些值将是SQL参数的输入-请参见示例此方法对SQL注入开放。不要这样做。@BrokenGlass的解决方案是更好,因为它使用参数化查询。我同意,但OP将其表述为一个字符串问题。我还引用了最安全的答案。向下投票其实并不必要
string cmd = String.Format(Sample, id1, id2);