c# - c#中的字符串组合

标签 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 (esfa_facet, esfa_tool) values (" +
            + toolOp + ", " +  cmbFacet.SelectedValue +"   ) ";

我得到的错误是:运算符 + 不能应用于“字符串”类型的操作数。第3行代码的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 注入(inject)了。

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

关于c# - c#中的字符串组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4552571/

相关文章:

c# - 使用 Autofac 配置 AutoMapper 以实现 ITypeConverter<,> 构造函数依赖

c# - 从 HttpClient 到用户定义对象 C# 的 HttpResponseMessage

c# - Process.PrivateMemorySize64 返回提交的内存而不是私有(private)的

c# - 在 PDF 查看器中以编程方式启用 'selecting tool'

c - 将未知长度的格式化数据写入字符串(C编程)

string - sed 删除字符的第一个实例和第二个实例之间的所有内容?

c# - 更高效的数据包序列化

c# - Android 通知按钮 (AddAction) 在按下时发出 Toast 消息

c# - 将尺寸较小的网格内的大矩形居中(并且 ClipToBounds 不起作用)

java - 仅当字段非空时才验证电子邮件