You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:将字符串插值的INSERT语句转换为VS2012兼容写法

没问题,我来帮你搞定这个转换~

解决VS2012中字符串插值转字符串拼接的问题

你之前拼接时遇到的问题大概率是单引号的嵌套错误,我们先把你的INSERT语句转换成正确的字符串拼接写法:

原来的插值语句:

"INSERT INTO [CustomerInfo] (CustomerName, CustomerEmail, CustomerAddress) " + $"VALUES ('{name}','{email}','{address}')";

转换成VS2012支持的字符串拼接写法:

"INSERT INTO [CustomerInfo] (CustomerName, CustomerEmail, CustomerAddress) " + 
"VALUES ('" + name + "', '" + email + "', '" + address + "')";

这里要注意:每个变量前后的单引号要正确嵌套——原来插值里的'{name}'对应拼接里的'" + name + "',也就是先写一个双引号包裹的单引号,再拼接变量,再拼接一个双引号包裹的单引号,这样最终生成的SQL里每个值都会被单引号包裹。


重要提醒:别踩SQL注入的坑!

不管是字符串插值还是直接拼接字符串,这种写法都存在严重的SQL注入风险,而且如果用户输入里包含单引号(比如名字是O'Neil),还会直接导致SQL语法错误。

即使在VS2012中,也强烈推荐使用参数化查询,这才是安全且健壮的写法,示例代码如下:

// 假设你用的是SqlConnection
using (SqlConnection conn = new SqlConnection("你的数据库连接字符串"))
{
    conn.Open();
    string sql = "INSERT INTO [CustomerInfo] (CustomerName, CustomerEmail, CustomerAddress) VALUES (@CustomerName, @CustomerEmail, @CustomerAddress)";
    using (SqlCommand cmd = new SqlCommand(sql, conn))
    {
        // 添加参数并赋值
        cmd.Parameters.AddWithValue("@CustomerName", name);
        cmd.Parameters.AddWithValue("@CustomerEmail", email);
        cmd.Parameters.AddWithValue("@CustomerAddress", address);
        // 执行插入操作
        cmd.ExecuteNonQuery();
    }
}

参数化查询会自动处理特殊字符(比如单引号),同时彻底避免SQL注入攻击,这比字符串拼接靠谱得多。

内容的提问来源于stack exchange,提问作者SunAwtCanvas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:03:59