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();
    }
}
相关推荐
努力进修30 分钟前
复杂查询性能优化:连接条件下推的代价模型设计与实践
数据库·sql·性能优化
武藤一雄9 小时前
C# 引用传递:深度解析 ref 与 out
windows·microsoft·c#·.net·.netcore
青槿吖10 小时前
第二篇:告别XML臃肿配置!Spring注解式IOC/DI保姆级教程,从入门到真香
xml·java·开发语言·数据库·后端·sql·spring
北漂Zachary11 小时前
Mysql中使用sql语句生成雪花算法Id
sql·mysql·算法
2301_8187320614 小时前
运行项目,sql报错无效索引 已解决
数据库·sql
bugcome_com14 小时前
C# 高级集合使用示例
开发语言·c#
Mao_Hui15 小时前
Unity3d实时读取Modbus RTU数据
开发语言·嵌入式硬件·unity·c#
Y0011123615 小时前
Day3-MySQL-SQL-2
数据库·sql·mysql
njsgcs15 小时前
怎么把面的类型特征,平面曲面融合进面邻接图或者图结构里
c#