C# OledDbDataAdapter";FROM子句中的语法错误;例外

C# OledDbDataAdapter";FROM子句中的语法错误;例外,c#,oledbdataadapter,C#,Oledbdataadapter,我正在使用OleDB将扩展名为“.K$$”的文本文件中的数据导入网格 下面是一些示例代码: FileInfo file = new FileInfo(filename); string connectionString = ""; OleDbDataAdapter adapter; OleDbConnection con; connectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + file.DirectoryNam

我正在使用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”,则文件已加载到网格中,但它只有一列,这意味着它无法看到行中有选项卡


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

请尝试检查文件名的路径,如果路径正确,请检查目录和文件名都不包含空格。如果他们这样做了,你需要避开/引用他们


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

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

我认为这是行不通的

您可能需要查看通过不同的提供程序或方法进行连接

我想你应该看看这个链接:-

编辑:


它将允许您将txt文件正确地读入数据表。

有什么例外?您也应该使用Try-and-Catch语句。file.Name的值是多少?
?语法看起来都很好,它必须与连接有关string@codingbiz文件名(不是完整路径名)加上扩展名。路径中是否有空格?目录和文件名都没有转义/引用。它们都不包含空格。@Dimitersonev由于扩展名字符的原因,您仍然需要引用文件名。请看我更新的答案。不用担心,我必须诚实地说,您试图像结构化数据库一样读取txt文件。我经常使用OLE数据适配器和MS Access数据库。我会做一些研究,看看是否有解决方案。谢谢你找到它。我对OleDB的.csv和excel文件没有问题,但我想我必须为其他文本文件创建自己的解析器。