C#+SQL:使用参数化查询通过values子句插入多行数据

在SQL中,如果你想一次性插入多行数据,可以使用INSERT INTO语句配合VALUES子句插入多条数据。

sql 复制代码
insert into table (col1,col2) values (val1_1,val1_2), (val2_1,val2_2), (val3_1,val3_2);

如何在执行这样的语句时,使用参数化查询防止SQL注入呢?

cs 复制代码
using (var connection=new SqlConnection(connectionString)) {           
    //向数据库插入的3条信息
    var data = new (string name, int age)[] {
        ("张三",10),
        ("李四",12),
        ("王五",15)
    };

    var valueList=new List<string>();
    var parameterList=new List<SqlParameter>();

    //// 构造参数占位符:(@name0,@age0),(@name1,@age1),...,并赋值对应的参数
    for(int i = 0;i<data.Length;i++) {
        valueList.Add($"(@name{i},@age{i})");
        parameterList.Add(new SqlParameter($"@name{i}",data[i].name));
        parameterList.Add(new SqlParameter($"@age{i}",data[i].age));
    }

    using(var command = connection.CreateCommand()){
        command.CommandText=$"insert into table(name,age) values {string.Join(",",valueList)};";
        //通过Parameters.AddRange方法插入参数数组
        command.Parameters.AddRange(parameterList.ToArray());
        command.ExecuteNonQuery();
    }
}
相关推荐
014-code33 分钟前
MySQL 常用业务 SQL
数据库·sql·mysql
前进的李工2 小时前
MySQL用户管理与权限控制指南(含底层架构说明)
开发语言·数据库·sql·mysql·架构
武藤一雄3 小时前
WPF中ViewModel之间的5种通讯方式
开发语言·前端·microsoft·c#·wpf
雨浓YN3 小时前
OPC UA 通讯开发笔记 - 基于Opc.Ua.Client
笔记·c#
瀚高PG实验室3 小时前
HGDB 4.5.8.8开启oracle兼容执行带聚合函数的SQL导致数据库进程被信号11杀死
数据库·sql·oracle·瀚高数据库
向上的车轮4 小时前
如何用DeepSeek定制大模型——智能Text-to-SQL专家系统
数据库·sql
我是唐青枫4 小时前
C#.NET TPL Dataflow 深入解析:数据流管道、背压控制与实战取舍
c#·.net
DROm RAPS4 小时前
SQL中如何添加数据
数据库·sql
lzhdim5 小时前
SQL 入门 9:SQL 高级子查询:ANY、EXISTS 与多位置应用
java·开发语言·数据库·sql·mysql
电商API&Tina6 小时前
跨境电商如何接入1688官方寻源通接口?附接入流程
java·数据库·python·sql·oracle·json·php