C# 在 SQL Table 中存储未知数量的元素

C# Store Unknown Amount of Elements in SQL Table

我目前正在读取和解析 10 个不同的文件(.txt、.csv),每个文件都有不同的列数。

这是来自一个文件的示例:

SqlCommand cmd = new SqlCommand("insert into " + table_name + " VALUES('"+data_from_file[0]+"', '" + data_from_file[1] + "', '" + data_from_file[2] + "', '" + data_from_file[3] + "', '" + data_from_file[4] + "','" + data_from_file[5] + "', '" + data_from_file[6] + "', '" + data_from_file[7] + "', '" + data_from_file[8] + "', '" + data_from_file[9] + "');", connection);
cmd.ExecuteNonQuery();

此文件共有 10 列插入到它自己的 table 中。如果我对 10 个文件这样做,我将有 10 个不同的 if/else if 语句。对我来说,这听起来像是一种糟糕的做法。有没有办法遍历数组并插入每个元素?我一直在寻找方法来做到这一点,但找不到适合我的问题的解决方案。谢谢您的帮助。

首先迭代您的集合,然后将集合中的每个条目插入到数据库中。

            foreach (var oneColumn in data)
        {
            SqlCommand cmd = new SqlCommand("INSERT INTO " + table_name + " VALUES(" + oneColumn + ")");
            cmd.ExecuteNonQuery();
        }

最经典的方法是 iterate 并附加到 string 然后执行:

string command = "insert into " + table_name + " VALUES(";

foreach(string data in data_from_file)
{
    command += "'" + data + "',";
}
command = command.TrimEnd(','); // remove the last extra ','
command += ");";

SqlCommand cmd = new SqlCommand(command);
cmd.ExecuteNonQuery();

但是,我建议您查看 SqlBulkCopy 以了解大型插入查询。