2013-07-06 3 views
0

У меня возникла проблема с моей базой данных. РМКО отображая свою базу данных в TextView выглядит как:База данных андроидов удалить строку по содержанию

hh:mm dd:MM:yyyy text 
12:14 12.12.2014 awdawdawd 
13:12 13:12:2015 awdaw awdw 

OnClick IAM получать текст по:

StringBuilder ortsplit = new StringBuilder(); 
String item = ((TextView) view).getText().toString(); 
      String[] itemsplit = item.split("\\s+"); 
      String uhrsplit = itemsplit[0].toString(); 
      String datumsplit = itemsplit[1].toString(); 
      ortsplit.setLength(0); 
      for (int i = 2; i < itemsplit.length; i++) { 
       ortsplit.append(" " + itemsplit[i].toString()); 
      } 
      String sortsplit = String.valueOf(ortsplit); 

затем РМКО открытие моей базы данных:

datasource.open(); 
       datasource.findedel(uhrsplit,datumsplit,sortsplit); 
       datasource.close(); 

мой datasource.findedel: public void findedel (String pZeit, String pDatum, String pOrt) {

database.delete("TABELLE", "UHRZEIT="+Zeit +"AND DATUM="+Datum+"AND ORT="+Ort,null); 

} 

ивы не получили «ID» отображается в строках, раньше это выглядело как:

1 hh:mm dd:MM:yyyy text 
2 12:14 12.12.2014 awdawdawd 
3 13:12 13:12:2015 awdaw awdw 

и ив просто взяли «ID» и искали мои записи для этого ID = идентификатора и удалила строку, но так как я удалил первую строку, я хочу искать строку по контенту.

any1 получил решение по моей проблеме?

+0

Вы должны принять ответ: http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work?answertab=votes # tab-top –

ответ

1

У вас есть несколько ошибок, а также вы склонны к SQL-инъекции.

Вы должны использовать подготовленные заявления, или вы должны добавить кавычки, чтобы ваши строки и избежать кавычки строка имеет, например, в вашем коде:

database.delete("TABELLE", "UHRZEIT="+Zeit +"AND DATUM="+Datum+"AND ORT="+Ort,null); 

так: DATUM="+Datum+"AND плохо закодированным, там нет места между Datum и AND, поэтому, если исходное значение равно test, то строка будет выглядеть так: DATUM=testAND. Это вернет синтаксические ошибки в mysql, а также строка должна быть процитирована следующим образом: DATUM='test' AND.

Основная проблема цитирования этого способа заключается в том, что если Datum имеет собственные цитаты, у вас также будут ошибки. Например, если Datum равно te'st, тогда ваша строка будет такой: DATUM='te'st' AND. Как видите, у вас будет 3 кавычки, а затем будет возвращена синтаксическая ошибка.

Вы должны прочитать и понять это, прежде чем идти дальше, потому что вы будете в конечном итоге с очень грязным кодом большим количеством ошибок и уязвимостей: http://wangling.me/2009/08/whats-good-about-selectionargs-in-sqlite-queries.html

УДАЧИ;)

А также, в Java все переменные имена должны начинаться с нижнего регистра (вместо String DatumString datum)

+0

хорошо спасибо, добавив «и 2» «это wo rked :) –

+1

@ ChrisJünger - Ты *** действительно *** хочу обратить внимание на остальную часть этого ответа. *** Не используйте свой текущий код ***. Это бомба замедленного действия, открытая для злоупотреблений и неожиданных последствий. Прочтите его ссылку и следуйте ее советам! – MatBailie

+0

Ну @ ​​ChrisJünger, я вижу, что вы не прочитали весь ответ. Увидимся в следующей задаче. –

Смежные вопросы