I'm using OleDB to import data into grid from text file with extension ".K$$".

Here's some example code:

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);

when executing the Fill method it throws the exception. What's wrong with the FROM clause? Thanks


EDIT:

Ok, after some tests I found out that the problem is with the "$" symbols. Maybe it's some reserved symbol ? Also, if I rename the extension to ".txt" the file got loaded into the grid but it only have 1 column , which means it can't see that there're tabs in the rows.

Another issue is that when I change the file extension to something different than ".txt" (for ex. ".tx") the Fill method throws exception "Cannot update. Database or object is read-only".

有帮助吗?

解决方案

OK, I just tried creating an example.K$$, and then tried to connect to it using the same provider as stated through Server Explorer in Visual Studio 2010. Its an Unrecognised format.

I don't think this will ever work.

You may need to look at connecting via a different provider or method.

I think You should look at this link :-

EDIT :

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

It will allow you to read your txt file into a datable correctly.

其他提示

Try checking the path of the filename if its correct

Check that neither the directory, nor the filename, contain spaces. If they do, you'll need to escape/quote them.

You'll also need to quote the filename if it contains an extension since the . is not a valid character in the FROM clause. Try FROM [{0}] (though this may not be the correct quoting character for the OleDbDataAdapter).

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top