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

时间:2016-06-21 13:15:16

标签: c# sql arrays sqlcommand

我目前正在阅读和解析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列插入到自己的表中。如果我对10个文件这样做,我会有10个不同的if / else if语句。对我而言,这听起来像是这样做的坏方法。有没有办法迭代数组并插入每个元素?我一直在寻找方法,但找不到适合我的问题的解决方案。谢谢您的帮助。

2 个答案:

答案 0 :(得分:1)

最经典的方式是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大插入查询。

答案 1 :(得分:0)

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

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