首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >string.format():不使用加号的多行字符串

string.format():不使用加号的多行字符串
EN

Stack Overflow用户
提问于 2010-03-13 18:34:42
回答 4查看 866关注 0票数 2

string.format()如何帮助避免在这样的语句中使用"+“:

代码语言:javascript
代码运行次数:0
运行
复制
string statement =" SELECT DISTINCT titel as linieName" +
                  " FROM qry_Forecast_Taktzeiten" +
                  " WHERE linieName LIKE 'lin%';"; 

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-13 18:41:06

+上面的语句用于连接您创建的几个字符串,以使代码更具可读性。String.Format在这里帮不了你!

要避免字符串连接,可以执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
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‘,你可以使用:

代码语言:javascript
代码运行次数:0
运行
复制
string statement =" SELECT DISTINCT titel as linieName" +
                  " FROM qry_Forecast_Taktzeiten" +
                  " WHERE linieName LIKE '{0}';";
statement = string.Format(staement, "lin%");

代码语言:javascript
代码运行次数:0
运行
复制
sb.AppendFormat(" WHERE linieName LIKE '{0}';", "lin%");

但是,如果"lin%“是从用户条目获得的,则上述所有使用字符串替换({0})的方法都存在SQL注入攻击的风险。

所以最好的办法是使用:

代码语言:javascript
代码运行次数:0
运行
复制
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%"));
票数 3
EN

Stack Overflow用户

发布于 2010-03-13 18:36:48

这里没有必要避免加号运算符-编译器在编译时连接字符串常量,因此在运行时不会发生连接。

票数 4
EN

Stack Overflow用户

发布于 2010-03-13 18:38:54

您可以使用@运算符

代码语言:javascript
代码运行次数:0
运行
复制
String linebreaks = @"Break
                      Lines
                      With @";

正如Daniel Brückner指出的那样,linebreaks的内容将包含空格。下面是上面代码的输出:

代码语言:javascript
代码运行次数:0
运行
复制
"Break
                       Lines
                       With @"

如果您正在存储SQL,这不是问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2438001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档