string.format()如何帮助避免在这样的语句中使用"+“:
string statement =" SELECT DISTINCT titel as linieName" +
" FROM qry_Forecast_Taktzeiten" +
" WHERE linieName LIKE 'lin%';";
发布于 2010-03-13 10:41:06
+
上面的语句用于连接您创建的几个字符串,以使代码更具可读性。String.Format
在这里帮不了你!
要避免字符串连接,可以执行以下操作:
StringBuilder sb = new StringBuilder();
sb.Append(" SELECT DISTINCT titel as linieName");
sb.Append(" FROM qry_Forecast_Taktzeiten");
sb.Append(" WHERE linieName LIKE 'lin%';");
statement = sb.ToString();
如果你想用你拥有的某个变量替换'lin‘,你可以使用:
string statement =" SELECT DISTINCT titel as linieName" +
" FROM qry_Forecast_Taktzeiten" +
" WHERE linieName LIKE '{0}';";
statement = string.Format(staement, "lin%");
或
sb.AppendFormat(" WHERE linieName LIKE '{0}';", "lin%");
但是,如果"lin%“是从用户条目获得的,则上述所有使用字符串替换({0})的方法都存在SQL注入攻击的风险。
所以最好的办法是使用:
string statement =" SELECT DISTINCT titel as linieName" +
" FROM qry_Forecast_Taktzeiten" +
" WHERE linieName LIKE @match;";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = statement;
cmd.Parameters.Add(new SqlParameter("@match", "lin%"));
发布于 2010-03-13 10:36:48
这里没有必要避免加号运算符-编译器在编译时连接字符串常量,因此在运行时不会发生连接。
发布于 2010-03-13 10:38:54
您可以使用@
运算符
String linebreaks = @"Break
Lines
With @";
正如Daniel Brückner指出的那样,linebreaks
的内容将包含空格。下面是上面代码的输出:
"Break
Lines
With @"
如果您正在存储SQL,这不是问题。
https://stackoverflow.com/questions/2438001
复制相似问题