【问题标题】:Efficient way to insert a list data into a mySQL database in C#在 C# 中将列表数据插入 mySQL 数据库的有效方法
【发布时间】:2012-05-10 08:32:36
【问题描述】:

我有想要转储到数据库中的 csv 文件。所以我创建了一个文件循环,并在循环内为每一行创建了一个名为 data 的列表

StreamReader file = new StreamReader(itemChecked.ToString());//read the file

while ((line = file.ReadLine())  != null)
{
    if (start_flag == true) // start processing the numbers, get the real data
    {
        List<string> data = new List<string>();
        data.AddRange(line.Replace("\"", "").Split(',').AsEnumerable());
    }
}

到目前为止一切顺利。

现在我想将列表数据插入数据库。清单相当大。我不想像这样输入每一个:

insert into table1 (tablenames) values (a, b, c on and on)

如何循环列表并将数据插入数据库?

【问题讨论】:

  • 你为什么用 C# 做这个?如果您不必这样做,有说明 here 关于如何在本机上为 MySql 执行此操作。
  • 你有没有尝试过?你有没有对mysql db执行过任何命令?
  • look at this question,看起来正是你的回应
  • 如果你还想滚动自己的数据导入器,至少尝试使用FileHelpers
  • 我必须在 c# 中执行此操作。这是一个应用程序,将数据插入数据库只是应用程序的一小部分。顺便说一句,我用 C# 和 mysql 完成了许多项目/应用程序。完全没有问题。如果我不得不切换到 sql server,问题会是一样的。

标签: c# mysql database loops


【解决方案1】:

首先,您需要使用the ADO.NET Driver for MySQL (Connector/NET) 连接到数据库。

其次,您将要打开与数据库的连接,然后插入一些数据:

var connection = new MySqlConnection();
connection.ConnectionString =
   "server=localhost;"
    + "database=DBNAME;"
    + "uid=USERNAME;"
    + "password=PASSWORD;";

connection.Open();

foreach(var datum in data) 
{
    var command = connection.CreateCommand();
    command.CommandText =
        "insert into table1 (tablenames)"
        + " values "
        + "(a, b, c on and on)";

    var result = command.ExecuteReader();
}

我的例子是based off this article。这不是一个完美的解决方案,但它应该让你开始。您可能希望look into MySQL Transactions 将您的插入批处理成有效的分组(取决于数据大小,一次可能为 100-1000 个。)

【讨论】:

  • 我需要循环不在插入的值上。我有一个包含值的列表
  • 也许一些示例数据会很有用,因为我想我不明白你在尝试什么。
【解决方案2】:

我会使用批量复制一次从 csv 文件中导入所有数据。您可以在此处找到示例:

http://www.codeproject.com/Articles/30705/C-CSV-Import-Export

我希望这就是你要找的东西

问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-03
    • 2018-07-30
    • 2015-07-22
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多