Одиночные кавычки в sqlite на андроид - PullRequest
3 голосов
/ 28 марта 2011

Я получаю значение от веб-сервиса. Некоторые из моих ценностей идут в одинарных кавычках. Как и в этом примере, sqlite не поддерживает одинарные кавычки. Поэтому я заменяю их двойными кавычками. Тогда как я получаю значение из базы данных, я не могу разобрать значение. Я получаю исключение синтаксического анализатора . Кто-нибудь может сказать мне, как это сделать?

это мой код, заменяющий одинарную кавычку на двойную кавычку

              stockservicevalue=stockservicevalue.replaceAll("'", "\"");

это мое извлечение значения из дБ

String sql = "SELECT * FROM MyQuest;";

Лог:

03-28 19:02:36.309: WARN/System.err(344): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 50437: not well-formed (invalid token)
03-28 19:02:36.321: WARN/System.err(344):     at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:492)
03-28 19:02:36.330: WARN/System.err(344):     at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:477)
03-28 19:02:36.340: WARN/System.err(344):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:317)
03-28 19:02:36.380: WARN/System.err(344):     at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:273)
03-28 19:02:36.389: WARN/System.err(344):     at com.inquest.SaxPortfolioDocument.getEventsFromAnXML(SaxPortfolioDocument.java:13)
03-28 19:02:36.411: WARN/System.err(344):     at com.inquest.PortfolioActivity$PortFolioTask.doInBackground(PortfolioActivity.java:171)
03-28 19:02:36.420: WARN/System.err(344):     at com.inquest.PortfolioActivity$PortFolioTask.doInBackground(PortfolioActivity.java:1)
03-28 19:02:36.430: WARN/System.err(344):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
03-28 19:02:36.430: WARN/System.err(344):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
03-28 19:02:36.440: WARN/System.err(344):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
03-28 19:02:36.479: WARN/System.err(344):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
03-28 19:02:36.500: WARN/System.err(344):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
03-28 19:02:36.510: WARN/System.err(344):     at java.lang.Thread.run(Thread.java:1096)
03-28 19:02:36.840: WARN/InputManagerService(58): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@46dfec78

Спасибо

Ответы [ 4 ]

9 голосов
/ 29 марта 2011
stockservicevalue=stockservicevalue.replaceAll("'", "\''"); 
1 голос
/ 22 сентября 2015

Мы можем использовать класс DatabaseUtils для Android.

stockservicevalue = DatabaseUtils.sqlEscapeString (stockservicevalue);

0 голосов
/ 18 мая 2016

Как вставить одинарные кавычки с SQLite Java. У меня это работает.

String str = "'Hello";

str = str.replace("'","\\'");
0 голосов
/ 28 марта 2011

Я думаю, правильный формат будет stockservicevalue=stockservicevalue.replaceAll("\'", "\"");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...