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

如何从字符串数组动态创建对象并批量插入SQL表?

C# 解决方案

原代码的核心问题

  1. 循环条件i <= myArray.Length会触发数组越界(数组最大索引为myArray.Length-1)
  2. 复用同一个Person对象,后续赋值会覆盖之前的实例数据
  3. 插入时机错误:i%3==0时还未收集完一组完整的ID/Name/Age数据

直观循环实现(推荐)

按组遍历的方式逻辑清晰,不易出错:

string[] myArray = {"1","Jack","18","2","John","22","3","Mark","29"};

// 步长设为3,每次处理一组3个元素
for (int i = 0; i < myArray.Length; i += 3)
{
    // 每组创建新的Person实例,避免数据覆盖
    Person p = new Person
    {
        Id = myArray[i],
        Name = myArray[i + 1],
        Age = myArray[i + 2]
    };
    AddNewRecord(p);
}

LINQ 简洁实现

适合偏好函数式编程风格的场景:

var persons = myArray
    .Select((item, index) => new { Item = item, GroupId = index / 3 })
    .GroupBy(g => g.GroupId)
    .Select(group => new Person
    {
        Id = group.ElementAt(0).Item,
        Name = group.ElementAt(1).Item,
        Age = group.ElementAt(2).Item
    });

foreach (var person in persons)
{
    AddNewRecord(person);
}
Java 解决方案

直观循环实现

String[] myArray = {"1","Jack","18","2","John","22","3","Mark","29"};

for (int i = 0; i < myArray.length; i += 3) {
    Person p = new Person();
    p.setId(myArray[i]);
    p.setName(myArray[i + 1]);
    p.setAge(myArray[i + 2]);
    addNewRecord(p);
}

Stream 简洁实现

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

// ...

String[] myArray = {"1","Jack","18","2","John","22","3","Mark","29"};

List<Person> persons = IntStream.range(0, myArray.length / 3)
    .mapToObj(groupIdx -> {
        int start = groupIdx * 3;
        Person p = new Person();
        p.setId(myArray[start]);
        p.setName(myArray[start + 1]);
        p.setAge(myArray[start + 2]);
        return p;
    })
    .collect(Collectors.toList());

persons.forEach(this::addNewRecord);

注:假设Person类已定义对应属性(C#)或getter/setter方法(Java),AddNewRecord/addNewRecord方法负责执行SQL插入操作(实际开发中务必使用参数化查询防止SQL注入)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:02:13