0

我正在使用 OleDB 从扩展名为“.K$$”的文本文件将数据导入网格。

这是一些示例代码:

FileInfo file = new FileInfo(filename);
string connectionString = "";
OleDbDataAdapter adapter;
OleDbConnection con;

connectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + file.DirectoryName + ";Extended Properties=\"Text;Format=TabDelimited;\"";

con = new OleDbConnection(connectionString);
con.Open();
adapter = new OleDbDataAdapter(String.Format("SELECT * FROM {0} ", file.Name), con);

adapter.Fill(MyDataTable);

执行 Fill 方法时会引发异常。FROM 子句有什么问题?谢谢


编辑:

好的,经过一些测试,我发现问题出在“$”符号上。也许这是一些保留的符号?此外,如果我将扩展名重命名为“.txt”,则文件已加载到网格中,但它只有 1 列,这意味着它看不到行中有标签。

另一个问题是,当我将文件扩展名更改为不同于“.txt”(例如“.tx”)的扩展名时,Fill 方法会引发异常“无法更新。数据库或对象是只读的”。

4

3 回答 3

1

好的,我只是尝试创建一个 example.K$$,然后尝试使用与通过 Visual Studio 2010 中的服务器资源管理器所述相同的提供程序连接到它。它是一种无法识别的格式。

我认为这永远不会奏效。

您可能需要考虑通过不同的提供商或方法进行连接。

我认为您应该查看此链接:-

编辑 :

http://www.codeproject.com/Articles/6737/Fill-a-DataSet-from-delimited-text-files

它将允许您将 txt 文件正确读取到数据表中。

于 2012-09-10T09:53:18.190 回答
0

尝试检查文件名的路径是否正确

于 2012-09-10T09:29:10.830 回答
-1

检查目录和文件名是否包含空格。如果他们这样做,您将需要转义/引用它们。

如果文件名包含扩展名,您还需要引用文件名,因为在子句.中不是有效字符。FROM尝试FROM [{0}](尽管这可能不是正确的引用字符OleDbDataAdapter)。

于 2012-09-10T09:35:52.193 回答