C# c语言中的字符串合成#

C# c语言中的字符串合成#,c#,.net,string,string-concatenation,C#,.net,String,String Concatenation,我试图弄明白为什么这段代码在C#中不起作用,以及如何修复它 string first = "hello"; string second = "look at" + first + "me"; 有什么建议吗 编辑: 对不起,我以为我犯的错误是一个简单的新手错误。我想还有更多。 这是我的实际代码: string toolOp = lstToolOpen.SelectedValue.ToString(); string sqlComm = "INSERT INTO ES_TOOL_FACET (

我试图弄明白为什么这段代码在C#中不起作用,以及如何修复它

string first = "hello";
string second = "look at" + first + "me";
有什么建议吗

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

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

我得到的错误是:运算符+不能应用于“string”类型的操作数。第三行代码的toolOp下面有一条红线。

toolOp
之前有两条
+
。应该是:

string sqlComm = "INSERT INTO ES_TOOL_FACET (esfa_facet, esfa_tool) values (" +
        toolOp + ", " +  cmbFacet.SelectedValue +"   ) ";
尽管如此,我还是建议您使用参数化查询。请记住,每次在构造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);
现在您可以安全地抵御SQL注入


结论:永远不要使用
+
进行SQL查询。

什么不起作用?预期的结果是什么?请解释一下它以何种方式不起作用,以及您的期望是什么?第二个变成“look athellome”,也许你应该加上空格?我觉得不错。将visual studio提供给您时出现了什么错误?工作正常。它甚至可以编译。比我在这里看到的许多代码都要好。因此,您只需要在cmbFacet上添加一个ToString()。SelectedValue:pUnless数据来自可信的源。甚至不要这样做。+1用于使用参数化查询。SQL中的字符串连接总是错误的,毫无例外。@Darin@cdhowie:不是永远错误,我对SQL查询使用
+
。。。当我想给别人举一个sql注入的例子,并告诉他们不要使用它时。我也看到了
string.Format
,它和
+
I一样邪恶assume@AndrzejNosal,yes
string。也应避免使用格式