【问题标题】:A simple C# connection string to a flat file , txt [closed]一个简单的 C# 连接字符串到一个平面文件,txt [关闭]
【发布时间】:2012-11-16 08:40:48
【问题描述】:

任何人都可以帮助我连接到 Microsoft 平面文件的字符串,扩展名为 txt 吗? 我只是想阅读一个用 | 分隔的 txt 文档.

如果可能的话,通过DataAdapter获取数据并将其加载到DataTable中,文件的第一行应该是DataTable上的列名,最后DataType在DataTable上并不重要

【问题讨论】:

标签: c#


【解决方案1】:

试试this

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\filepath;Extended Properties="text;HDR=Yes;FMT=Delimited";

类似的东西应该可以工作

  string strSql = "SELECT * FROM [" + fileName + "]"; 

  string strCSVConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFilePath + ";" + "Extended Properties='text;HDR=YES;'"; 

  // load the data from CSV to DataTable 

  OleDbDataAdapter oleda = new OleDbDataAdapter(strSql, strCSVConnString); 
  DataTable dtbCSV = new DataTable(); 
  oleda.Fill(dtbCSV); 

【讨论】:

  • 请尝试将其放入一段代码或连接字符串中,以显示您如何使用它
  • @NathanM,请在编辑后的帖子中找到它
  • 感谢 ArsenMkrt,我现在可以访问该文件,但因为它是用 | 分隔的。不知道所有的列吗?我正在遍历数据表中的行以获取现在的行名,并且它没有得到超过 2 个奇怪的名称,我正在使用 foreach 进行迭代
  • 如果要定义分隔符stackoverflow.com/questions/3109360/…,请参考这里
  • 我确实检查了链接,但我认为我遇到了同样的问题,显然似乎没有答案
【解决方案2】:

看看http://connectionstrings.com/textfile

示例连接字符串:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;
Extended Properties="text;HDR=Yes;FMT=Delimited";

【讨论】:

  • 谢谢大家,但是你如何调用它或放入一个连接字符串,只是从 C# 开始,所以我远不是你已经看到的专家:)
  • @NathanM 连接字符串就是这样 - string。将 cjk 提供的字符串(使用正确的路径)分配给 ConnectionString 属性。
  • 是 JonB,但收到错误消息“找不到已安装的 ISAM”
  • @NathanM - 在您寻求帮助时包含错误消息对于获得好的答案至关重要。
【解决方案3】:

如何利用 .Net 提供的优势:

参考 Microsoft.VisualBasic 即可使用TextFieldParser

using (var parser =
    new TextFieldParser(@"c:\data.csv")
        {
            TextFieldType = FieldType.Delimited,
            Delimiters = new[] { "," }
        })
{
    while (!parser.EndOfData)
    {
        string[] fields;
        fields = parser.ReadFields();
        //go go go!
    }
}

【讨论】:

  • 难道不能做更简单的事情,比如调用 DataAdapter 和填充 DataTable 吗?
  • 字段数组非常简单。 DataAdapters 和 Tables 并不简单。 IIRC microsoft.jet.oledb 确实不是那么便携,只能保证在 32 位进程下工作(即 x64 驱动程序未安装在某些 x64 操作系统上)。在我看来,调用驱动程序来做这件事是痛苦的长篇大论,而且有点脆弱。
【解决方案4】:

我找到了导致问题的原因。 在 MS 网站上,他们讨论了一个 schema.ini 文件,该文件应该能够处理分隔文件 bla bla bla ,但我注意到,一旦您将所有设置放入注册表,它就会接管。因此,一旦我更改了注册表 ArsenMkrt 代码中的格式并且连接字符串正常工作,我就根据自己的需要进行了调整,一切都很好。

感谢大家,非常感谢 ArsenMkrt。

我喜欢 C#

【讨论】:

    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 2021-10-28
    • 2013-03-12
    • 2015-01-27
    • 1970-01-01
    • 2011-06-17
    • 2016-01-17
    • 1970-01-01
    相关资源
    最近更新 更多