C# OledDbDataAdapter";FROM子句中的语法错误;例外
我正在使用OleDB将扩展名为“.K$$”的文本文件中的数据导入网格 下面是一些示例代码: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
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文件没有问题,但我想我必须为其他文本文件创建自己的解析器。