【问题标题】:Reading a file line by line in c# and inserting into access database?在c#中逐行读取文件并插入到access数据库中?
【发布时间】:2014-04-29 11:30:51
【问题描述】:

我正在编写一个简单的 c# 应用程序,其中我从文件中读取一行,将其拆分,并在适当的转换后将相应的令牌插入到访问数据库中。我正在使用流阅读器逐行读取输入文件。这是我的代码的 sn-p。

using(reader = Streamreader(filepath)
{
    while((line = reader.readline()) != null)
    {
        string[] tokens = line.split('\t');
        mycommand.commandtext = "INSERT INTO table_name (name, property) VALUES (@xname, @xproperty)";
        mycommand.parameters.addwithvalue("@xname", tokens[0]);
        mycommand.parameters.addwithvalue("@xproperty", float.parse(tokens[1]);
        mycommand.executenonquery();
    }
}

问题在于,如果输入文件包含 6 个不同的行,那么只有与第一行关联的值会被复制 6 次到我的数据库中。我做错了什么?

【问题讨论】:

  • command 还是mycommand?您已经在示例代码中使用了这两种方法。
  • 对不起,我的错!修好了!
  • 是读者逐步浏览所有行,即行 ((line = reader.readline()) != null) 是否每次通过循环分配下一行

标签: c# oledb readline


【解决方案1】:

您不能在循环中替换参数,因为 OleDBCommand 不支持命名参数。参数替换是按照您添加参数的顺序进行的,因此您必须在每次运行时创建一个新命令,因为第二次循环运行您添加了第三个和第四个参数(而您只使用了两个)。

【讨论】:

  • 关于命名参数,它们在第一行工作得很好,所以我想它们应该在任何地方都可以工作。
  • 我想你如何命名它们并不重要。我更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 2010-12-24
  • 2010-11-19
相关资源
最近更新 更多