2011-06-19 14 views
8

Czy jest rodzimy sposób na ucieczkę łańcuchów dla Ormlite na Androida?Metoda łańcucha znaków Ormlite?

Na przykład, jeśli chcę podać ciąg znaków: ormlite's escape func, musi on zostać dostarczony jako funckcja ormlite.

TestDao.queryForFirst(TestDao.queryBuilder().where().like("stats", stats) 
    .prepare()) 

Próbowałem za pomocą metody UpdateBuilder za escapeValue, ale to tylko sprawia, że ​​następujące zmiany: 'func ucieczki ormlite za' . Dodaje pojedyncze cudzysłowy do początku i końca instrukcji. Czy istnieje natywna obsługa uciekających łańcuchów, aby była bezpieczna dla wtrysku sql?

Jeśli nie, jakie są sposoby, aby to zrobić?

Dziękujemy!

+0

maja pierwszy ciąg w '' like() '' -Method być potencjalnym brakiem bezpieczeństwa wtryskowego? – unlimited101

Odpowiedz

15

Próbowałem użyć metody escapeValue UpdateBuilder, ale wprowadza ona tylko następującą zmianę: 'escape escape' ormlite. Dodaje pojedyncze cudzysłowy do początku i końca instrukcji. Czy istnieje natywna obsługa uciekających łańcuchów, aby była bezpieczna dla wtrysku sql?

To jest najczęściej zadawane pytania. Właściwym sposobem na to jest użycie argumentu SelectArg, aby SQL mógł używać znaku? typ konstrukcji. Oto kolejny question talking about this.

SelectArg selectArg = new SelectArg(stats); 
TestDao.queryForFirst(
    TestDao.queryBuilder().where().like("stats", selectArg).prepare()); 

Oto dokumentacja na funkcjonalność select-Arg:

http://ormlite.com/docs/select-arg

A oto kilka dyskusji na ten temat na liście użytkowników ORMLite:

http://groups.google.com/group/ormlite-dev/browse_thread/thread/71d07202404f97e7

http://groups.google.com/group/ormlite-user/browse_thread/thread/7ced95c474031e3c

Edit:

Jak @Moritz zwraca uwagę, jeśli faktycznie aktualizowanie bazy danych, można również użyć SelectArg z UpdateBuilder:

SelectArg arg = new SelectArg("Some value"); 
updateBuilder.updateColumnValue(MY_COLUMN, arg); 
+0

Doskonały, zadziałało. Dziękuję Ci. – the5threvolution

+1

BTW działa również dla instrukcji aktualizacji: 'SelectArg arg = new SelectArg(); arg.setValue ("Some value"); updateBuilder.updateColumnValue (MY_COLUMN, arg); – Moritz

Powiązane problemy