@Rasteris: No nie byłbym taki pewien czy tak bardzo udała. QString ma ten sam problem co Java String - nie jest w stanie przechować dowolnego znaku unicode, bo reprezentacja znaku jest ograniczona tylko do 16 bitów, a unicode wymaga 24 bitów.
@Rasteris: To domyślne zachowanie biblioteki libsqlite, a nie problem Qt. Po za tym, jeżeli sprawdzasz plik zamiast istnienia i schematu tablic to robisz to źle.
@lionbest: dostałem już poradę żeby korzystać QMimeType. A db.open w qt robi śmieszną rzecz, otwiera pusty plik, bez niczego, dopiero jak zrobisz create table to dodaje wszystko inne. Problemu by nie było, gdyby open można było użyć z opcją don't create new file.
@lionbest: i najśmieszniejsze, wszelkie example w sieci mają: if(!db.open()), żeby to się wywaliło to tylko jak nie masz praw do odczytu pliku albo nie istnieje katalog. W innych przypadkach zawsze udanie.
@lionbest: QmimeType sprawdza ciąg SQLite w pliku, Można i na upartego zrobić osobną tabelę z jednym rekodem gdzie jest wersja bazy i sprawdzać czy zgadza się zakres obsługiwanych wersji. Tylko z tego wychodzi kilka warunków. W sumie, żeby było porządnie trzeba sprawdzić czy plik istnieje, jakie ma prawa ro czy rw, czy jest plikiem bazydanych. Użytkownikowi trzeba dać konkretny komunikat, a nie database open file error. Ale to powinno być
@lionbest: aha, komunikaty błędów sqllite też są takie średnie. Niezależnie czy nie otwarta baza, plik bez bazy czy np brak tabeli to komunikat z query jest "no query" i trzeba zgadywać o co chodzi.
W ogóle Qt to jest jeden wielki NIH syndrome. C++ ma przecież swój własny
std::string. Po co wynajdować koło na nowo, w dodatku kwadratowe?Po za tym, jeżeli sprawdzasz plik zamiast istnienia i schematu tablic to robisz to źle.
sqlite_schemaczy ma odpowiednie tablice.