Dzięki za odpowiedzi!
Adapter tworzę w ten sposób (na podstawie http://tech.pro/tutorial/803/csharp-tutorial-using-the-built-in-oledb-csv-parser):
System.Data.OleDb.OleDbDataAdapter dAdapter = new System.Data.OleDb.OleDbDataAdapter(query, connString);
gdzie zmienne są następujące
query = "SELECT * FROM plik.csv"
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\katalog\";Extended Properties="text;HDR=No;FMT=Delimited""
Wypełniam go w taki sposób:
System.Data.DataTable dTable = new System.Data.DataTable();
dAdapter.Fill(dTable);
i w momencie wykonywania fill otrzymuję
Message: Nie mozna zaktualizować. Baza danych lub obiekt dostępny jest tylko do odczytu.
Stack trace: System.Data.OleDb.OleDbCommand.ExecuteOmmandTextErrorHandling(OleDbHResult hr) ...
To mnie trochę dziwi, bo przecież potrzebuję tego pliku tylko do odczytu. Jeszcze się upewnię, że nie mam pliku gdzieś otwartego, chociaż nie sądzę. Anglojęzyczny odpowiednik to "Cannot Update. Database Or Object Is Read-only".
Być może problemem jest też nagłówek (te trzy linie, które maja inna ilość kolumn, niż linie z danymi w csv), ale nie widzę prostego sposobu (lepszego, niż przepisanie pliku z pominięciem pierwszych trzech linii), żeby wykonać zapytanie od czwartej linii, zamiast "select * from".
A ten link (http://devlicio.us/blogs/sergio_pereira/archive/2008/09/17/tip-export-to-csv-using-ado-net.aspx) może się przyda, jak już przeczytam dane i będę chciał posortowane zapisać do pliku wyjściowego, ale temu się dokładniej przyjrzę, jak już będę mógł utworzyć DataTable z csv i posortować.
Pozdrawiam!
Znalazłem informację (http://stackoverflow.com/questions/9069309/reading-excel-with-c-sharp), aby dodać do connection string ";IMEX=1". To powoduje nowy komunikat "Could not find installable ISAM" ("Nie można znaleźć instalowalnego pliku ISAM"). Równiez i na to znalazłem odpowiedź ("What I had to do is save the file to the server, then connect to it from there" - http://www.dreamincode.net/forums/topic/218277-cannot-update-database-or-object-is-read-only/), jednak nie ma ona zastosowania w moim przypadku.