czwartek, 8 grudnia 2011

Android, SQLite, Locale i kolejność sortowania

Helou,

   Dzisiejszego posta wrzucam ku pamięci, żeby pamiętać na przyszłość. Mam nadzieję, że oszczędzi on komuś czasu i nerwów.

Tworząc prostą, bazodanową aplikację na Google Android natknąłem się na problem z sortowaniem wyników kwerendy zaczynających się od polskich znaków. Problem polegał na tym, że słowa zaczynające się od polskich znaków (np. śrubokręt) lądowały w liście na końcu alfabetu (po tych zaczynających się na "z"). Po dłuższym czasie bezowocnego guglania znalazłem wreszcie na to sposób:

db.query("table_name", new String[] { "column1", "column2",
     "column3", "column4" }, null, null, null, null,
     "column2" + " COLLATE LOCALIZED");
 
 



Pomocne są parametry dodane do kwerendy: COLLATE LOCALIZED. Dzięki nim sqlite sortuje wyniki korzystając z locale systemu, co rozwiązuje problem.








   Tak przy okazji, to niedługo wrzucę swoją pierwszą aplikację na Android Market. :-)












2 komentarze:

  1. Bardzo pomocny wpis, szkoda że tak ciężko go znaleźć. Pozdrawiam.

    OdpowiedzUsuń
    Odpowiedzi
    1. Bardzo się cieszę, że mimo wszystko udało się ten wpis znaleźć i że, przede wszystkim, okazał się pomocny :-)

      Usuń