c#中的字符串组合

Mei*_*eir 3 .net c# string string-concatenation

我试图弄清楚为什么这个代码在C#中不起作用以及如何解决它.

string first = "hello";
string second = "look at" + first + "me";
Run Code Online (Sandbox Code Playgroud)

有什么建议?

编辑:对不起,我认为我犯的错误是一个简单的新手错误.我想还有更多.这是我的实际代码:

 string toolOp = lstToolOpen.SelectedValue.ToString();
 string sqlComm = "INSERT INTO ES_TOOL_FACET (esfa_facet, esfa_tool) values (" +
            + toolOp + ", " +  cmbFacet.SelectedValue +"   ) ";
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:Operator +不能应用于'string'类型的操作数.第3行代码中的toolOp下面有一条红线.

Dar*_*rov 15

你有两个+toolOp.它应该是:

string sqlComm = "INSERT INTO ES_TOOL_FACET (esfa_facet, esfa_tool) values (" +
        toolOp + ", " +  cmbFacet.SelectedValue +"   ) ";
Run Code Online (Sandbox Code Playgroud)

这就是说我建议你使用参数化查询.请记住,每次+在构造SQL查询时使用运算符都是错误的:

string sqlComm = "INSERT INTO ES_TOOL_FACET (esfa_facet, esfa_tool) VALUES (@esfa_facet, @esfa_tool)";
sqlCommand.Parameters.AddWithValue("@esfa_facet", toolOp);
sqlCommand.Parameters.AddWithValue("@esfa_tool", cmbFacet.SelectedValue);
Run Code Online (Sandbox Code Playgroud)

现在您可以安全地防止SQL注入.

结论:永远不要使用+SQL查询.

  • @Darin @cdhowie:从来没有,我使用`+`和SQL查询...当我想给别人一个sql注入的例子并告诉他们不要使用它. (3认同)