Mam gotową bazę danych SQLite, nie mogę jej modyfikować (nawet nie potrzebuję, tylko zwracam uwagę, jeśli ktoś sugerowałby zapisanie jej na nowo przez jakąś zewnętrzną przeglądarkę/edytor baz SQLite), próbuję ją odczytać przez providera System.Data.SQLite (http://sqlite.phxsoftware.com/), ale pojawił się problem z polami VARCHAR, gdzie są teksty zapisane m.in. cyrylicą. Przypuszczalnie oryginalny program zapisał to jakoś po swojemu i przy odczycie jakichkolwiek danych C# traktuje to jako string, czyta jako Unicode i traci dane.
Jak robię odczyt?
- otwieram połączenie (próbowałem z UseUtf16Encoding=true ale nie robi żadnej różnicy)
- przypisuję SQLiteDataAdapter, DataSet, DataTable
- puszczam zapytanie po SQLiteDataAdapter
- z DataRow wyciągam dane i wrzucam do ListView (DataGridView jest brzydki)
Dane są utracone już na etapie wyciągania z DataRow, więc żadne konwersje nie pomogą. Jednocześnie w bazie danych znaki są, oryginalna aplikacja je odczytuje, SQLite Administrator też (ale są inne przeglądarki baz danych SQLite, które sobie z tym nie radzą).
Czy da się zmusić odczyt pola VARCHAR nie jako object (który jest na zapewne bazie typu pola rozpoznawany jako string), tylko jako przykładowo byte[]? Żeby odzyskać 1:1 to co jest zapisane? Później przejście z byte[] do string z zachowaniem kodowania znaków to byłby banał, ale jak się dobrać do tego?
Wszelkie pomysły mile widziane :) Z góry dzięki :)
PS: Halp - I are stuk ;)